在堆栈中实现pop()方法

时间:2016-03-10 18:05:12

标签: java

我在Java中有一个pop()方法我想实现它。这是我的代码:

public E pop() {
    if (top == null) {
        throw new NoSuchElementException();
    } else {
        return top.element;
        top = top.next;
    }
}

但我的书是这样做的:

public E pop() {
    if (top == null) {
        throw new NoSuchElementException();
    }
    E tmp = top.element;
    top = top.next;
    return tmp;
}

我的peek()方法是否正确?

2 个答案:

答案 0 :(得分:3)

由于之前行中的return语句,您的top=top.next;将不会被执行。您必须保存临时弹出的对象以设置新的顶部。

答案 1 :(得分:2)

return意味着两件事:

  • 使用return语句后面的值作为函数调用的结果
  • 停止执行该功能并将控制流程返回给调用者。

您对return的理解似乎表明您错过了第二点。

Java有点聪明,并且无法编译程序,因为它检测到top = top.next;是无法访问的语句。并非所有语言/编译器都这样做。

你的窥视实现与书中的实现相同。

作为旁注:

  • 学习编写单元测试以验证程序的正确性是有益的。
  • 在计算机上学习编程而不是在纸上学习是有益的。