【问题标题】:addFirst() in java.util.LinkedListjava.util.LinkedList 中的 addFirst()
【发布时间】: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


【解决方案1】:
   while(!linkedList.isEmpty()){
        linkedList.peek();
    }

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

但据我所知不涉及循环

你认为while 是什么?

【讨论】:

  • 感谢您的回答。我在看错误的方法。感谢您,我更改了代码并修复了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-19
  • 2016-06-10
  • 2015-04-03
  • 2012-09-20
  • 1970-01-01
  • 2014-04-13
相关资源
最近更新 更多