一本书后习题上要求实现一个循环单列表,具体要求是没有表头没有表尾, 只有一个指向任意节点的current引用,不知道哪位大虾能否指点一下,谢谢~

解决方案 »

  1.   

    是链表啊.不是列表.用二维数组可以实现,也可以自己定义一个类来实现.
    如果用数组可以这样:
    数组中的元素:        12  4  5  23  7  9
    用下标表示下一元素:   1   2  3  4   5  0
    再用一个int变量current表示一个下标.如果自己定义一个类:
    class Node{
       int elem; //假设链表中的元素是int.
       Node next;
    }一种数据结构重要的是操作.所以你还要有操作.
    1向链表中添加元素.
    2删除链表中的一个元素.
    3链表是否为空.
    4查找链表中是包含某一元素.
    5遍历整个链表.
    等等. 
      

  2.   

    谢谢二楼的,能否就第二种情况讲下怎样向链表中添加元素,没有表头,也没有表尾,只有一个current引用?
      

  3.   

    current指向第一个加进链表的元素就可以了
    添加元素,就加到current指的那个元素的位置就可以了.
    给Node类加上一个Node(int)的构造方法;
     void add(int i){
         if(current!=null){
            Node t=new Node(i);
            t.next=current.next; 
            current.next=t;
         }else{ //这时添加的是第一个元素.
            Node t=new Node(i);
            current=t;
            current.next=t;
         }   
      }
        
      

  4.   

    再重载一个方法:
    void add(Node n){
       if(current!=null){
           n.next=current.next;
           current.next=n;
        else{
           current=n;
           current.next=n;
        }
    }