push函数如何在堆叠的LinkedList中工作?

时间:2017-10-28 17:45:27

标签: java linked-list stack nodes

这是我老师的示例代码:

public void push(T item){
        node<T> newNode = new node<T>(item);
        newNode.next = head;
        head = newNode;

    }

这就是我的理解: 我创建了一个名为newNode的新节点。这会将新节点的数据值设置为项目,而下一个节点则指向空(null)。

然后我说新节点指向它旁边的节点,称为head。然后我将列表的头部命名为newNode。

这是我没有得到的: 前一个节点发生了什么?如何知道继续使用newNode而不仅仅是消失并退出列表?

例如,如果5是头部而6是newNode,则6将指向5作为其后的节点。但是我们说头5,也是6?那么5会发生什么?

2 个答案:

答案 0 :(得分:1)

当您首先在堆栈上创建一个节点时,将最后一个节点放在顶部,即头部。所以首先你的Example将5放在堆栈上,所以5它的下一个指向null并且是堆栈的头部。这是你理解的。当您将6放入堆栈时,其nextNode.next指向当前磁头所在的地址,在这种情况下是节点5。然后,头部将指向节点6的地址。

所以6仍然指向前一个头部是5。

希望这有帮助

答案 1 :(得分:1)

这将是一个奇怪的答案,但也许有助于了解如何设置指针:

所以原始列表看起来像这样:

linkedList -(head)-> node1 -(next)-> node2 -(next)-> etc.

然后你创建一个新节点:node<T> newNode = new node<T>(item);

node3 -(next)-> null    
linkedList -(head)-> node1 -(next)-> node2 -(next)-> etc.

然后,您将新节点指向您的旧头:newNode.next = head;

node3 -(next)-> node1 -(next)-> node2 -(next)-> etc.  
linkedList -(head)-> node1 -(next)-> node2 -(next)-> etc.

然后将头指针更改为新节点:head = newNode;

linkedList -(head)-> node3 -(next)-> node1 -(next)-> node2 -(next)-> etc.