java - 栈式linkedList中的push函数是如何工作的?

标签 java linked-list stack nodes

这是我老师的示例代码:

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

    }

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

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

这是我不明白的: 作为头的前一个节点会发生什么?它怎么知道去追寻 newNode 而不是直接消失并从列表中消失?

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

最佳答案

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

所以原始列表如下所示:

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.  

关于java - 栈式linkedList中的push函数是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46992667/

相关文章:

java - Hibernate Search 是 Lucene 的干净抽象吗?

java - 在给定的代码块中查找错误(类的扩展,个人/学生)

java - Spring 安全: Form login special characters

c - 反转链表并打印结果

c - fscanf返回值和链表

python - 将 python 中的递归深度增加到 100000

Java 扫描器不工作

c++ - C++如何从链表中选择随机项目

performance - 递归与手动堆栈 - 在哪种情况下首选?

java - 为什么我的队列类像堆栈一样工作?