2015-04-22 15 views
0

LinkedLists書中的問題要求在沒有第一個和最後一個指針的情況下實現LinkedList,同時允許使用「當前」指針訪問列表。我不太確定我是否在正確的軌道上,任何幫助將不勝感激。下面是我試過了,我想獲得插入/刪除工作...如何在沒有first&Last的Java中實現CircularLinkedList?

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(); 
} 


} 

回答

0

您的鏈接類需要旁邊設置爲某個值在構造函數中

public Link (int id, Link next) 

然後你想要的列表是循環的,因此對於第一個鏈接,下一個將是它自己。插入元素A時,將current.next設置爲A,將A.next設置爲current.next的前一個值。要通過ID搜索進行刪除直到找到它(current.next in loop)並且每次保存前一個元素B.然後,當你找到要搜索B.next到B.next.next的元素時。

相關問題