【发布时间】:2021-05-29 11:27:29
【问题描述】:
我是数据结构的新手。我尝试输入 5 个字符并使用 pop() 函数将其反转。但数组中最后一个索引的值显示为空。谁能解释一下原因?
堆栈类:
package stack;
public class Stack {
int top = 0;
String stack[] = new String[5];
public void push(String val) {
if(top >= 4) {
System.out.println("Overflow Condition");
}
else {
stack[top] = val;
System.out.println("new value for index"+top+" " +"is"+" "+stack[top]);
top++;
}
}
public void pop() {
String output ;
if(top == -1) {
System.out.println("Underflow Condition");
}
else {
for(int i= top; i >= 0; i--) {
output = stack[top];
System.out.println("Removed Index:"+" "+(top+1)+"is"+ output);
top--;
}
}
}
public void peek() {
String output;
if(top >= 4) {
System.out.println("Overflow Condition");
}
else {
output = stack[top];
}
}
}
主程序:
package stack;
import java.util.Scanner;
public class StackHome {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner inp = new Scanner(System.in);
Stack obj = new Stack();
String arr[] = new String[5];
for(int i=0; i<5; i++) {
System.out.println("Value to add for stack");
String value = inp.next();
arr[i] = value;
obj.push(arr[i]);
}
obj.pop();
//obj.peek();
}
}
输入
为堆栈添加的值
一个
index0 的新值是 a
为堆栈添加的值
b
index1 的新值为 b
为堆栈添加的值
c
index2 的新值为 c
为堆栈添加的值
d
index3 的新值是 d
为堆栈添加的值
e
输出
溢出条件
删除的索引:4is null
删除索引:3is d
删除索引:2is c
删除索引:1is b 删除的索引:0 是一个
【问题讨论】:
-
为什么要删除
pop()-方法中的多个元素? -
你好 @dan1st 我只是尝试使用 pop() 方法删除我使用 push() 方法添加到堆栈的所有值。
-
pop() 用于移除栈顶元素。
-
@dan1st 是的。但是在 pop() 函数中,我使用 top-- 减少了 top 。有错吗??
-
是的,但为什么在 for 循环中?除此之外,为什么在pop方法中检查
-1而不是0?
标签: java data-structures stack