在过去的一个小时里,我一直试图弄清楚链接列表是什么,我了解到它包含节点和链接。这个节点实际上是什么?你如何在java中定义一个链表?虽然我读过不同的程序,但我想要最基本的程序,而不使用任何直接函数。如何工作和访问链表?以及如何存储链接和节点?这些是我感到困惑的几个问题。谢谢您,任何部分答案将不胜感激。
问问题
153 次
3 回答
1
链表是一个有序列表,其中一个节点引用下一个节点。您的列表应该跟踪当前节点,其中包含对下一个节点的引用。当列表被迭代时,当前节点被切换到它的下一个节点,其中包含对下一个节点的引用。循环从那里继续。
一个简单的谷歌搜索揭示了很多关于 LinkedList 的信息。这个维基百科页面很好地解释了它。
也许节点接口的说明会有所帮助。
public interface Node(){
public Node next();
public Node prev();
}
使用此接口,您可以创建节点的“链”,因为节点具有对下一个和前一个节点的引用。
我应该注意我可能误读了您的问题,我以为您想创建自己的实现。
于 2013-04-06T09:38:41.560 回答
0
实现不是您需要担心能够使用列表的事情:
List<String> yourList = new LinkedList<String>();
yourList.add("item1");
yourList.add("item2");
// etc
// iterating example
for(String currentNodeElementOrWhatever : yourList) {
// use this element somehow
System.out.println(currentNodeElementOrWhatever);
}
在这种情况下,“item1”和“item2”是节点,它们每个都有到下一个节点的链接,因此 item1 -> item2 和 item2 -> null 因为它是最后一个项目。
于 2013-04-06T09:37:50.373 回答
0
这是 Node.js 的一个类示例。
public class Node<T>{
Node next;
T value;
}
LinkedList 的伪代码实现示例:
Add( val){
Node newNode = new Node();
newNode.next = firstNode;
tailNode.next = newNode;
newNode.value = val;
}
Get( idx){
Node currentNode = firstNode;
while(idx--!= 0)
currentNode = currentNode.next;
return currentNode.value;
}
Delete(idx){
Node nodeToRemove= firstNode;
while(idx-- > 0)
nodeToRemove= currentNode.next;
nodeToRemove.next = null;
}
于 2013-04-06T09:52:11.123 回答