如何实现堆栈?(How to implement stack?)
优质
小牛编辑
125浏览
2023-12-01
问题描述 (Problem Description)
如何实现堆栈?
解决方案 (Solution)
下面的示例演示如何通过创建用户定义的push()方法来输入元素来实现堆栈,以及pop()方法从堆栈中检索元素。
public class MyStack {
private int maxSize;
private long[] stackArray;
private int top;
public MyStack(int s) {
maxSize = s;
stackArray = new long[maxSize];
top = -1;
}
public void push(long j) {
stackArray[++top] = j;
}
public long pop() {
return stackArray[top--];
}
public long peek() {
return stackArray[top];
}
public boolean isEmpty() {
return (top == -1);
}
public boolean isFull() {
return (top == maxSize - 1);
}
public static void main(String[] args) {
MyStack theStack = new MyStack(10);
theStack.push(10);
theStack.push(20);
theStack.push(30);
theStack.push(40);
theStack.push(50);
while (!theStack.isEmpty()) {
long value = theStack.pop();
System.out.print(value);
System.out.print(" ");
}
System.out.println("");
}
}
结果 (Result)
上面的代码示例将产生以下结果。
50 40 30 20 10
以下是通过创建用户定义的push()方法来输入元素来实现堆栈的另一个示例,以及用于从堆栈中检索元素的pop()方法。
import java.util.*;
public class Demo {
static void showpush(Stack stack1, int a) {
stack1.push(new Integer(a));
System.out.println("push(" + a + ")");
System.out.println("stack: " + stack1);
}
static void showpop(Stack stack1) {
Integer a = (Integer) stack1.pop();
System.out.println(a);
System.out.println("stack: " + stack1);
}
public static void main(String args[]) {
Stack stack1 = new Stack();
System.out.println("stack: " + stack1);
showpush(stack1, 40);
showpush(stack1, 50);
showpush(stack1, 60);
showpop(stack1);
showpop(stack1);
showpop(stack1);
try {
showpop(stack1);
} catch (EmptyStackException e) {
System.out.println("it Is Empty Stack");
}
}
}
上面的代码示例将产生以下结果。
stack: []
push(40)
stack: [40]
push(50)
stack: [40, 50]
push(60)
stack: [40, 50, 60]
60
stack: [40, 50]
50
stack: [40]
40
stack: []
it Is Empty Stack