我一直试图找出过去一小时内链接列表的内容。我了解到它包含节点和链接。这个节点究竟是什么?如何在java中定义链表?虽然我已经阅读了不同的程序,但我想要最基本的程序而不使用任何直接功能。如何工作和访问链表?以及如何存储链接和节点? 这些是我很困惑的几个问题。谢谢,任何部分答案将不胜感激。
答案 0 :(得分: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 - &gt; item2和item2 - &gt; null,因为它是最后一项。
答案 1 :(得分:0)
链表是一个有序列表,其中一个节点引用下一个节点。您的列表应跟踪当前节点,其中包含对下一个节点的引用。当迭代列表时,当前节点切换到其下一个节点,该节点包含对下一个节点的引用。这个循环从那里继续。
简单的Google搜索会显示有关LinkedList的大量信息。这个wikipedia page很好地解释了它。
也许节点界面的说明会有所帮助。
public interface Node(){
public Node next();
public Node prev();
}
使用此接口,您可以创建节点的“链”,因为节点具有对下一个和上一个节点的引用。
我应该注意到我可能误解了你的问题,我认为你想创建自己的实现。
答案 2 :(得分:0)
这是Node的一个类示例。
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;
}