java.util.LinkedList中的addFirst()

时间:2015-10-14 21:51:25

标签: java linked-list stack

这是作业。

我使用链表制作堆栈。我选择使用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非常困难,因为我无法将任何东西压入堆栈。我不知道出了什么问题。

1 个答案:

答案 0 :(得分:4)

   while(!linkedList.isEmpty()){
        linkedList.peek();
    }

peek()永远不会将链表从非空更改为空,因为它不会更改列表。

  

但据我所知,没有涉及循环

您认为while是什么?