有个简单链表如下public class MyLinkedList{
  private Node header;
  private Node tail;
  private int  size;
  public MyLinkedList(){
    header = tail = null;
    size = 0;}
  private class Node {
    private Object data;
    private Node link;
    public Node (Object data){
      this data = data;
      link = null;
      }
    }
// add an element to tail.
public void add (Object data ){
  Node node = new Node (data);
  if  (size == 0){
     header = tail = node;
     }
     else {
           tail link = node;
           tail = node;
     }
    size ++;
   }
}
____________________________________________________________
private class Node {
    private Object data;
    private Node link;
自己定义自己?
tail link = node;
 tail = node;
不理解意思但不知为什么这么写?

解决方案 »

  1.   

    private Node link;你这句有没有看错 前面有没有static 这样的关键字啊
    你这代码哪抄来的?书上?
      

  2.   

    tail link = node;
     tail = node;
    哦 你这个变量面放的是地址 也就是指向下一个元素的地址Node,
    没问题
      

  3.   

    这是个单向链表private class Node {
        private Object data;//本身数据
        private Node link;//下个链接
    自己定义自己?
    =======================
    对链表就是自己含有一个自己
    tail link = node;
     tail = node;
    不理解意思但不知为什么这么写?
    =======================
    代码有误 更正如下
    tail.link = node;
     tail = node;
    含义楼上说了修改了下你的代码加入了测试代码 ,希望能帮助你理解
    public class MyLinkedList{
      private Node header;
      private Node tail;
      private int  size;
      public MyLinkedList(){
        header = tail = null;
        size = 0;}
      private class Node {
        private Object data;
        private Node link;
        public Node (Object data){
          this.data = data;
          link = null;
          }
        }
    // add an element to tail.
    public void add (Object data ){
      Node node = new Node (data);
      if  (size == 0){
         header = tail = node;
         }
         else {
               tail.link = node;
               tail = node;
         }
        size ++;
       }
    public static void main(String[] args) {
      MyLinkedList l=new MyLinkedList();
      l.add("1");
      l.add("2");
      l.add("3");
      Node a=l.header;
      for(int i=0;i<l.size;i++){
        System.out.println(a.data);
    a=l.tail;     
      };}
    }接分
      

  4.   

    给 syoumei(含泪挥别2006) 分吧,看不下去了
      

  5.   

    呵呵,这个链表的定义是比较特殊,还好java中不要我们去关心实现
      

  6.   

    呵呵,类名 变量名
    这样定义,只定义一个引用,(引用就像C中指针一样,不过没有那么灵活,也出错少)
    不会在内存中分配空间,引用和类不是一个东西,好好看看你学JAVA的书,是不是在这一块漏看了什么东西:)
      

  7.   

    private Node link;
    不是自己定义自己,而使这个变量可以指向同一个类型。
    相当于指针
      

  8.   

    syoumei(只答有趣的题,只解答不甚懂的题) 
    -------------------------------------
    你的测试代码 运行结果为:1
                             3
                             3
    a=l.tail;   //有问题
      

  9.   

    更正
     a=a.link;
    哈哈 lz好样的
    贴错了
    哎 又丢人了