如何在没有第一个和第一个的Java中实现CircularLinkedList。持续多久?

时间:2015-04-22 23:35:14

标签: java linked-list

LinkedLists书中的一个问题要求在没有第一个和最后一个指针的情况下实现LinkedList,同时允许使用“当前”指针访问列表。我不太确定我是在正确的轨道上,任何帮助将不胜感激。这是我的尝试,我想插入/删除工作...

class Link
 {
    public int iData;              
    public Link next;              

 public Link(int id) // constructor
 {
  iData = id;                         
  }                          

public void displayLink()     
{
 System.out.print(iData + " ");
}
}  // end class Link


public class CircularLinkedList
{
private Link current;        
private Link first;

//-------------------------------------------------------------
public CircularLinkedList(){
 current = null; 
}

public CircularLinkedList(Link link){
current = link;
}

public Link getCurrent(){
return current;
}

public Link getNext(){
return current.next;
}

public void setCurrent(Link current){
this.current = current;
}

public void insert(int data){
Link newLink = new Link(data);

//only link
if(current == null){ 
    current = newLink;
    first = current;
}else{
    current.next = newLink;
}

newLink.next = first;
}

public void delete(){

}

public int find(int key){
return -1;
}


public void displayList()
{
Link tmp = current;
while(current != null)      // until end of list,
  {
     current.displayLink();   // print data
     current = current.next;  // move to next link
     if(current == tmp)
         break;
  }
  System.out.println("");
}

public static void main(String ...args){
CircularLinkedList list = new CircularLinkedList();
list.insert(10);
list.insert(20);
list.insert(30);
list.insert(40);

list.displayList();
}


}

1 个答案:

答案 0 :(得分:0)

您的链接类需要在构造函数

中的某个值旁边设置
public Link (int id, Link next)

然后你希望列表是循环的,所以对于第一个链接,下一个本身。插入元素A时,将current.next设为A,将A.next设置为current.next的先前值。要通过ID搜索删除,直到找到它(循环中的current.next)并每次保存前一个元素B.然后,当您找到要搜索B.next到B.next.next。

的元素时