Java编程 - 循环链表
答
提示...循环链表应该有一个和以前的,而不是第一个和最后。逻辑很重要
答
好的,我不会给你这个班的全部实施,而是我会给你一些建议。
- 您不需要持有对最后一个元素的引用。放置一个上一个和下一个引用到你的节点,你的最后一个节点将是第一个。预览
-
除了圆形列表没有结束的事实,它们与常规列表完全相同,但是在哪里可以找到像这样的最后一个项目:
Node tmp = first;
while(tmp.Next!= null) tmp = tmp.Next;
在循环链表的想法是这样的:
Node tmp = first;
while (tmp.Next != first)
tmp = tmp.Next;
因为你永远也找不到指向空节点,除非该列表是空的。最后一个建议是,如果你需要实现一个索引,记得在一个循环表有作为指标超出范围,没有这样的事,因为
list[count] = list[0] = list[count * k]
记住这一点,因此在计算你的这些方法的指数可相当棘手。对于正面指标,主要思路是:
index = index % count;
对于负值略有不同。我希望我能用我的话帮助你。如果你想要一个实现,我相信,如果你礼貌地问谷歌,应该有几个:)
祝你好运!
答
我不确定你的问题是什么,你似乎有所需的一切。链接列表和普通列表之间唯一的区别就是增加结尾。
在常规链接列表中,您将创建一个新节点并将最后一个元素指向该节点。在这种情况下,您将•Last节点中的指针更改为指向新节点,并将新节点指向•First。
删除工作方式与正常链接列表相同。每当你想删除一个节点时,你会发现哪一个节点指向那个节点(先前,或者在删除第一个节点的情况下,选中•Last),并指向被删除节点指向的任何节点。
如果这不能解决您的问题,请告诉我,我会尽力帮助。
只注意到有人已经要求完全一样的问题: Can I use java.util.LinkedList to construct a circular/cyclic linked list?
答
class Node {
int value;
Node next;
Node prev;
Node(int initialValue) {
value = initialValue;
next = null;
prev = null;
}
public int getValue() {
return this.value;
}
}
class NodeList {
Node pointer;
NodeList() {
pointer = null;
}
public void insertNode(int nodeValue) {
Node newNode = new Node(nodeValue);
if(pointer == null) {
newNode.next = newNode;
newNode.prev = newNode;
}else if(pointer.next == null && pointer.prev == null && pointer != null) {
newNode.next = pointer;
newNode.prev = pointer;
pointer.prev = newNode;
pointer.next = newNode;
}
else if(pointer != null) {
newNode.next = pointer.next;
newNode.prev = pointer;
pointer.next.prev = newNode;
pointer.next = newNode;
}
pointer = newNode;
System.out.println(“Successfully inserted : ” + pointer.getValue());
}
public void printRing(boolean direction) {
Node tempNode = pointer;
do {
System.out.println(“Value = ” + tempNode.getValue());
tempNode = direction ? tempNode.next : tempNode.prev;
} while(tempNode.value != pointer.value);
}
}
这接缝像功课..我有没有猜呢? – 2010-11-29 04:43:25
嗨同学学生! PLZ尝试一些事情,当你遇到困难时,我们可以推动你一点。伊莫看你的实验室实践中的第一堂幻灯片和第一个练习。 – Muggen 2010-11-29 04:44:27
如果你向他们展示你到目前为止尝试过的东西,人们会乐于提供帮助。 – Naveen 2010-11-29 04:44:53