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();
}
}
答案 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。
的元素时