我正在阅读java中的堆栈。我找到了这段代码。我不明白isEmpty方法和pop方法..我在下面的代码中的每一行旁边评论过..你能告诉我pop和isEmpty方法吗? 感谢
public class Stack {
int [] sk = new int[5];
int top =-1;
public static void main(String[] args) {
Stack s = new Stack();
s.push(34);
s.push(-44);
s.push(7);
while (!s.isEmpty())
{
System.out.println(s.pop());
}
}
public int pop() {
return sk[top--]; // what happens here? why not we use a for loop like for(int r=sk.length; r>0; r--) return sk[r];
}
public boolean isEmpty() {
return (top==-1); // why we return top==-1 , what is the purpose of it? should not we return sk[sk.length]==0; ?
}
public void push(int i) {
sk[++top]=i;
}
}
答案 0 :(得分:0)
“pop”=从堆栈中弹出顶部项目并将其返回
客户端代码使用“isEmpty”来了解堆栈中是否还有其他项目。 (一个用例是循环while (myStack.isEmpty() == false) {}
)
top--
在返回值后递减'top'变量。
++top
在返回值之前递增'top'变量。
所以......如果你把一个新项目“推”到堆栈上,top
变为0(之前)它返回用于将项目放入数组的值。
与push方法相反的是pop,其中top--
用于在top
方法返回0之后递减++
的值。这使得top
等于-1,这意味着堆栈为空。 (如果你'推'一个项目然后'弹出'一个项目
答案 1 :(得分:0)
top
跟踪数组sk
(堆栈指针)中的当前索引。编写此代码的人决定当top
= -1时,这会将堆栈标记为空。这适用于pop
函数...
pop
返回堆栈顶部的当前项(sk[top]
),并递减堆栈指针(top
)。
答案 2 :(得分:0)
将堆栈视为桌面上的纸张。
使用push
,您可以在堆栈顶部再放一张纸。
使用pop
,您将带走最顶层的纸张。
使用isEmpty
检查桌面上是否还有纸张。
...的sooo
public int pop() {
//Take away the element at position top and then reduce top by one
return sk[top--];
}
关于isEmpty的更多细节:
top
是元素数组中的指针。只要此指向最低项目(具有值-1),堆栈就被视为空。
==
是等号运算符,因此(top == -1)
的结果为boolean
。它的true
如果顶部指针指向-1,则为false
。
public boolean isEmpty() {
//the top-most item is desk-level: No more items.
//Arrays in Java are 0-based, so there is no array element at -1
return (top==-1);
}