Java Linked List Stack推送功能不更改数据

Posted

技术标签:

【中文标题】Java Linked List Stack推送功能不更改数据【英文标题】:Java Linked List Stack push function not changing the data 【发布时间】:2021-11-25 10:34:48 【问题描述】:

我无法更改函数的参数或 Node 构造函数。当我调用 push 函数 - push(T element1) - 然后用不同的元素 - push(T element2) 再次调用它时,它根本不会改变节点的数据,只是给它 element1 数据。

 public void push(T element) 
  /* YOUR CODE HERE */
     Node<T> newNode = new Node<T>(element, top);
     if(isEmpty()) 
         top = bottom = newNode;
         System.out.println("Stack is empty");
     
     newNode.setData(element);
     newNode.setLink(top);
     top = newNode;
     count++;
     return;
 

【问题讨论】:

【参考方案1】:

您的代码有几个问题:

Node<T> newNode = new Node<T>(element, top);

您在构造函数中传递数据和 nextNode,因此您不必在代码中进一步设置它们。

您也不必在 void 方法的末尾使用return;

此外,在一个用于堆栈实现的 LinkedList 中你很可能不需要底部,它应该是单 LinkedList。

 public void push(T element) 
     Node<T> newNode = new Node<T>(element, top);
     top = newNode;

     count++;
 

这应该是工作代码示例。

这是解决您问题的好方法,您可以从这里获得灵感:https://www.geeksforgeeks.org/implement-a-stack-using-singly-linked-list/

【讨论】:

以上是关于Java Linked List Stack推送功能不更改数据的主要内容,如果未能解决你的问题,请参考以下文章

114. Flatten Binary Tree to Linked List

Leetcode 1019. Next Greater Node In Linked List

114. Flatten Binary Tree to Linked List

206. Reverse Linked List

234. Palindrome Linked List

LeetCode 1019. Next Greater Node In Linked List (链表中的下一个更大节点)