如何从链表堆栈推入或弹出

时间:2018-10-02 00:58:36

标签: java linked-list stack

我必须从链表堆栈中推送和弹出,这是我实现的将对象推送到堆栈顶部的代码,但是鉴于构造函数,我不知道如何从堆栈中弹出内容。

这是我要推送的代码

public void push(Q obj) {
  Node<Q> node = new Node(obj);
    if (top == null) {
        top = node;
    } 
    else {
        node.setNext(top);
        top = node;
    }

    length++;
}

这是我为Pop提供的构造函数

Public T pop() {


    //Change the return statement 
    return null;
}

这些是我在代码顶部定义的变量

 private int length = 0;


private Node<Q> top = null;

1 个答案:

答案 0 :(得分:2)

首先,它不是pop的构造函数。阅读什么是构造函数以及如何在类中使用它。

在您的代码中,Node被推到链接列表的最前面,并且顶端指向最近插入的节点。

因此,在弹出期间,您需要删除当前顶部并修改顶部以指向被压入的倒数第二个节点。将当前顶部存储到某个临时变量,将顶部节点指向第二个倒数第二个节点,然后返回该临时变量。

public T pop() {
    if(top!=null){
      Node<Q> temp = top;
      top = top.next;
      temp.next = null;
      return temp;
     }
    return null;
}