-3

在过去的一个小时里,我一直试图弄清楚链接列表是什么,我了解到它包含节点和链接。这个节点实际上是什么?你如何在java中定义一个链表?虽然我读过不同的程序,但我想要最基本的程序,而不使用任何直接函数。如何工作和访问链表?以及如何存储链接和节点?这些是我感到困惑的几个问题。谢谢您,任何部分答案将不胜感激。

4

3 回答 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 回答