LinkedList java Iterator.next的概念?

时间:2015-09-22 18:32:28

标签: java linked-list

我对LinkedList概念有困难。我不知道iterator.next如何存储下一个节点的引用。这是代码 这是Node类

public class Node {
    int data;
    Node next;

    Node(int data) {
        this.data= data;
    }
}

这是LinkedList类

public class LL {

    public static void main(String[] args) {

        Node start = new Node(0);

            Node iterator =start;

            for(int i =1; i <5 ;i++) {
                iterator  =iterator.next = new Node(i);
            }

                    for(iterator = start ; iterator != null;  iterator = iterator .next){
                    System.out.println(iterator .data);
                    }
        }
    }

请告诉我iterator.next当next是Node类型的对象时会做什么。

2 个答案:

答案 0 :(得分:0)

从您的示例看,您的Node结构看起来像这样:

class Node {
    Object item; // some kind of value
    Node next; // reference to some other node
}

所以类型Node的每个引用都可以保存对Node类型的另一个对象的引用,该对象可以保存对Node类型的另一个对象的引用,...创建类似于链表的结构。

您的代码按照我上面描述的方式完成了该结构:

  • 我们引用了Node类型的对象,称为iterator
  • 只要迭代器引用不为null
    • 我们在当前节点iterator.item
    • 中打印该项目
    • 我们使迭代器指向下一个节点引用iterator = iterator.next

答案 1 :(得分:0)

通常最好直观地考虑数据结构。例如,这是一个包含3个节点的链表:

[A] - &gt; [B] - &gt; [C]

在节点上调用next()只是返回列表中的下一个节点。

例如在伪代码中 A.next()== B. 和 B.next()== C

您可以阅读有关LinkedLists的更多信息,并在此处查看更多图片: https://en.wikipedia.org/wiki/Linked_list