当前位置: 首页 > 知识库问答 >
问题:

整数堆栈的Java链接列表表示有什么问题?

边明煦
2023-03-14

好的,通过下面的代码,我从pop方法中的所有内容中得到了一个null指针异常。因此,我知道当该方法运行时,“head”必须为null。问题是我不知道为什么,我已经仔细检查了我的代码。请帮忙!

Here it is:

节点类:

public class StackNode{

  private StackNode link; //link to next node
  private int value;

  public StackNode(int value, StackNode linkValue){
    this.link = link;
    this.value = value;
  }
  public StackNode(){
   this.link = null;
  }
  public void setNodeData(int value){
   this.value = value; 
  }
  public void setLink(StackNode newLink){
   this.link = newLink; 
  }
  public int getValue(){
   return this.value; 
  }
  public StackNode getLink(){
   return link; 
  }
}

链接列表类:

public class IntStackList{

 private StackNode head;

 public IntStackList(){ this.head = null; }
 public void push(int value){
   this.head = new StackNode(value, head);
 }
 public int pop(){
   int value = this.head.getValue(); //get the int value stored in the head node
   this.head = head.getLink(); //sets the head to the next node in line
   return value;
 }
}

我在一个将十进制数转换为二进制数(对于一个类)的程序中实现了这一点。我可以打印第一个节点的数据,也就是链表的头,但是当再次弹出时,就会出现空值问题。

共有1个答案

柏麒
2023-03-14

如果堆栈节点,则在构造函数中将链接分配给自身。。。

public class StackNode {

    private StackNode link; //link to next node
    private int value;

    public StackNode(int value, StackNode linkValue) {
        this.link = link;
        this.value = value;
    }

应该是的

this.link = linkValue;
 类似资料:
  • Stack类 栈:(水杯喝水,先进后出) 栈是一种数据结构,是只能在某一端插入和删除的特殊线性表。他按照先进后出的原则存储数据 Enumeration(枚举) hasMoreElements() 测试此枚举是否包含更多的元素 nextElements() 如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素 代码演示: package day07; import java.util.D

  • 我有一个关于书库的问题...我想写一个有3个堆栈的程序,我想在每个堆栈上添加这些操作(我应该使用数组): 1.创建堆栈2。按3号。流行音乐4号。显示每个堆栈的顶部 我写的程序,但我遇到了这些错误: 错误4错误LNK2019:未解析的外部符号“public:int\u thiscall stack::IsFull2(void)”(?IsFull2@stack@@QAEHXZ)在函数“public:v

  • 问题内容: 使用Java中的链表实现堆栈的最佳方法是什么? 编辑:我将最好的定义为最有效的使用干净的代码。我已经使用数组来实现堆栈,但是对链接列表不熟悉,因此想知道是否有人可以帮助我实现类似于以下内容的内容: 编辑:如果有人感兴趣,这是链表的实现。 问题答案: 假设您真的想从头开始,而不是使用现有的完美堆栈实现之一,那么我建议您: 创建一个“ MyStack ”类,该类实现所需的任何接口(也许列出

  • 本文向大家介绍Python栈的实现方法示例【列表、单链表】,包括了Python栈的实现方法示例【列表、单链表】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python栈的实现方法。分享给大家供大家参考,具体如下: Python实现栈 栈的数组实现:利用python列表方法 代码如下: 运行结果: 栈的长度: 4 items:['welcome', 'www', 'jb51', 'net

  • 所以我有一个堆栈,它允许典型的Push和Pop函数。我很难理解这一切实际上是如何在代码方面工作的。我在这里看到了这篇文章,最佳答案中的图片/图表,展示了列表是如何被“推”下来的,你指向最新的元素。我有一个 它挂接到结构“节点” 我如何结合一个推拉与"节点*下一步;"?最难理解的是我将如何真正做到这一点。我知道它最初指向空,然后如果我推一个2,4,6,它将是6,4,2,#。掌握如何实际使用链表中的指

  • 因此,我试图使用ArrayList在名为Table的类中创建卡片的“堆”,其中包含包含卡片对象(在单独的类中定义)的堆栈。 我是这样初始化的: 我的问题是,我不知道如何在ArrayList内的堆栈中添加内容。我对它的初始化是否错误?如果是,我如何修复它? 注意:MyArrayList和MyStack本质上只是ArrayList和Stack的稍微不同版本。