使用Java一维数组模拟压栈弹栈攻略
前提
在模拟压栈弹栈之前,我们需要了解以下概念:
- 栈(Stack):后进先出的数据结构,只有一个入口和出口。
- 压栈(push):将一个元素存入栈中。
- 弹栈(pop):将栈中最后一个元素取出,栈的长度减一。
使用一维数组模拟栈
Java中通过一维数组就可以很容易地模拟一个栈的操作。
假设我们要实现一个固定长度为10的栈,我们可以定义一个容量为10的int类型数组和一个变量top
,用于记录栈顶元素。
public class MyStack {
private int[] stack = new int[10];
private int top = -1;
}
我们通过top
的值来表示栈顶元素在数组中的索引,因此初始值设为-1
,表示数组为空。
压栈操作
在压栈操作时,我们需要将元素存入数组中,并更新栈顶元素的位置,即将top
的值加一。
public void push(int num) {
if (top == stack.length - 1) {
System.out.println("Stack is full!");
return;
}
stack[++top] = num;
}
这里我们限制栈的长度为10,当top
的值已经达到数组容量时,就输出提示信息“Stack is full!”。
弹栈操作
在弹栈操作时,我们先判断栈是否为空,若为空则输出提示信息“Stack is empty!”,之后返回0。
若不为空,则将栈顶元素取出并将top
的值减一。
public int pop() {
if (top < 0) {
System.out.println("Stack is empty!");
return 0;
}
int num = stack[top--];
return num;
}
示例说明
示例1
public static void main(String[] args) {
MyStack stack = new MyStack();
stack.push(10);
stack.push(20);
stack.push(30);
System.out.println(stack.pop()); //30
System.out.println(stack.pop()); //20
System.out.println(stack.pop()); //10
System.out.println(stack.pop()); //Stack is empty! 0
}
以上示例演示了如何向栈中压入三个元素10、20、30,并依次弹出这三个元素。在最后一次弹出时,由于栈已经为空,输出提示信息“Stack is empty!”并返回0。
示例2
public static void main(String[] args) {
MyStack stack = new MyStack();
for (int i = 0; i < 15; i++) {
stack.push(i);
}
System.out.println(stack.pop()); //14
stack.push(100);
System.out.println(stack.pop()); //100
System.out.println(stack.pop()); //13
}
以上示例演示了如何向栈中压入15个元素,并在栈已满时输出提示信息“Stack is full!”。
后续操作中将元素100压入栈中,并依次弹出了栈顶元素13和100。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用java一维数组模拟压栈弹栈 - Python技术站