首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带节点堆栈的推送方法

带节点堆栈的推送方法
EN

Stack Overflow用户
提问于 2021-03-02 21:27:54
回答 1查看 171关注 0票数 0

我在做涉及Java中的堆栈和节点的作业时遇到了困难。我理解堆栈的概念,但与节点混淆。任务是使用堆栈(而不是java.util.Stack)来生成一个程序,它检查一个数学表达式是否有正确的()、[]和{}对。我们已经有了Node程序。因此,基本上我的问题是,我需要一些帮助来完成我的PStack类的Push方法。

PStack.java

代码语言:javascript
复制
class PStack {
    private Node top;


    public PStack() {
        top=null;
    }
    public boolean isEmpty() {
        return top==null;
    }
    public int pop() {
        Node top1 = top;
        top = top.getNext();
        return top1.getData();


    }
    public void push(Node n) {
        



    }
    public int peek() {
        return top.getData();
    }

}

Node.java

代码语言:javascript
复制
public class Node {
    private int data;
    private Node nextnode;
    public Node(int intial) {
        data = intial;
        nextnode = null;
    }

    public int getData() {
        return data;
    }

    public Node getNext() {
        return nextnode;
    }

    public void setData(int newdata) {

        data = newdata;
    }

    public void setNode(Node next1node) {

        nextnode = next1node;
    }

}

我试过:

代码语言:javascript
复制
public void push(Node n) {
    Node next = n;
    top.getNext().setNode(n);


}

结果:

代码语言:javascript
复制
Exception in thread "main" java.lang.NullPointerException
    at javaclass.stack.pStack.push(pStack.java:24)
    at javaclass.stack.StackDriver.main(StackDriver.java:17)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-02 22:04:02

代码语言:javascript
复制
public void push(Node n) {
    n.setNode(top);
    top = n;
}

编辑:

顺便说一句,这是一个奇怪的堆栈实现。看起来它想要成为一堆int原语。peek()和pop()都返回一个int。但是,push需要一个参数,它应该是堆栈本身的内部构造。它不应该将Node对象作为参数。它应该接受一个int参数,并在内部用Node对象包装它。

另外,Node.setNode应该被命名为Node.setNext。它只是更符合你正在做的事情。链接列表节点具有“下一步”成员,而双链接列表节点具有“下一步”和“先前”成员。节点对象的getter和setter应该为这些成员适当地命名。

如下所示:

PStack.java

代码语言:javascript
复制
public class PStack {
    private Node top;

    public boolean isEmpty() {
        return top==null;
    }

    public int pop() {
        Node top1 = top;
        top = top.getNext();
        return top1.getData();
    }

    public void push(int data) {
        Node newtop = new Node(data);
        newtop.setNext(top);
        top = newtop;
    }

    public int peek() {
        return top.getData();
    }
}

Node.java

代码语言:javascript
复制
public class Node {
    private int data;
    private Node next;

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

    public int getData() {
        return data;
    }

    public Node getNext() {
        return next;
    }

    public void setNext(Node next) {
        this.next = next;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66447426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档