如何启动链表?

时间:2013-04-06 09:34:21

标签: java linked-list computer-science

我一直试图找出过去一小时内链接列表的内容。我了解到它包含节点和链接。这个节点究竟是什么?如何在java中定义链表?虽然我已经阅读了不同的程序,但我想要最基本的程序而不使用任何直接功能。如何工作和访问链表?以及如何存储链接和节点? 这些是我很困惑的几个问题。谢谢,任何部分答案将不胜感激。

3 个答案:

答案 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;
}