使用单个链表的堆栈中的java pop()方法错误

时间:2018-05-06 21:27:30

标签: java linked-list tree stack pop

在我正在进行的项目中,我使用单个链表来实现堆栈,然后我应该将堆栈的元素移动到二叉树中。 我在pop()方法中遇到问题,直到最后一个pop()才能正常工作。

因为我使用了堆栈所以删除元素将是最后一个 而且我在哪里遇到错误..

这是我的单链表removeLast方法的代码:

public class SLinkedList {
SNode head = null;
SNode tail = null;
int size = 0;

public int removeLast(){
    if(size == 0){
        return 0;
    }else{
        SNode e = null;
        SNode a = null;
        a = tail;
        e = head;
        while(e.next != tail){
                e = e.next;
        }
        tail = e;
        tail.next = null;
        size --;
        return a.data;
      }}}

这是我的堆栈实现代码:

public class StackSingle {
SLinkedList stack;

public StackSingle(){
    stack = new SLinkedList();
}

public void push(int s){
    stack.addLast(new SNode(s));
}

public int pop(){
    return stack.removeLast();
}

public void printStack(){
    stack.print();
}

public int getSize(){
    return stack.size;
}

并在主要内容:

StackSingle s = new StackSingle();
    s.push(5);
    s.push(8);
    s.push(2);
    s.push(4);
    s.push(1);
    s.push(6);
    s.push(7);
    s.push(3);
    s.push(9);


    Tree t = new Tree();
    t.add(s.pop());
    t.add(s.pop());
    t.add(s.pop());
    t.add(s.pop());
    t.add(s.pop());
    t.add(s.pop());
    t.add(s.pop());
    t.add(s.pop());
    t.add(s.pop());

我还是新手,我会非常感谢你的帮助

0 个答案:

没有答案