在我正在进行的项目中,我使用单个链表来实现堆栈,然后我应该将堆栈的元素移动到二叉树中。 我在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());
我还是新手,我会非常感谢你的帮助