这是作业。
我使用链表制作堆栈。我选择使用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非常困难,因为我无法将任何东西压入堆栈。我不知道出了什么问题。
答案 0 :(得分:4)
while(!linkedList.isEmpty()){
linkedList.peek();
}
peek()
永远不会将链表从非空更改为空,因为它不会更改列表。
但据我所知,没有涉及循环
您认为while
是什么?