【发布时间】:2016-01-13 04:24:13
【问题描述】:
这是作业。
我正在使用链表制作堆栈。我选择使用 Java 的 java.util.LinkedList 包中的链表。当我在 Main 类中调用 addFirst() 方法时,程序不会完成。它就像一个无限循环,但据我所知,不涉及循环。这是代码:
package assignment3;
import java.util.LinkedList;
/**
*
* @author Eric
*/
public class LinkedListStack<T> {
LinkedList linkedList = new LinkedList();
public boolean isEmpty() {
if (linkedList.isEmpty()) {
return true;
} else {
return false;
}
}
public int size() {
int size = linkedList.size();
System.out.println("The size of the stack is " + size);
return size;
}
// This is the problem method.
public void push(T element) {
linkedList.addFirst(element);
}
public void pop() {
while(!linkedList.isEmpty()){
linkedList.removeFirst();
}
}
public void peek() {
while(!linkedList.isEmpty()){
linkedList.peek();
}
System.out.println("The first element in the stack is " + linkedList.peek());
}
}
这是调用 push() 方法的 Main 类。
package assignment3;
/**
*
* @author Eric
*/
public class Main {
public static void main(String args[]) {
LinkedListStack linkedListStack = new LinkedListStack();
linkedListStack.push(1); // This never finishes.
linkedListStack.peek();
linkedListStack.size();
}
}
测试 LinkedListStack.java 非常困难,因为我无法将任何东西压入堆栈。我不知道出了什么问题。
【问题讨论】:
-
提示:您可以使用
return linkedList.isEmpty();而不是if-else来缩短函数isEmpty()。 -
为什么你认为
push永远不会结束?你认为你的peek方法有什么作用?你为什么这么认为?
标签: java linked-list stack