在Java编程中,如何实现堆栈?
下面的例子展示了如何通过创建用户定义的push()
方法来推入元素和pop()
方法从堆栈中弹出检索元素来实现堆栈。
package com.yiibai;
public class ImplementationOfStack {
private int maxSize;
private long[] stackArray;
private int top;
public ImplementationOfStack(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) {
ImplementationOfStack theStack = new ImplementationOfStack(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("");
}
}
上述代码示例将产生以下结果 -
50 40 30 20 10
示例-2
以下是通过创建用户定义的push()
方法用于输入元素和pop()
方法从堆栈中检索元素来实现堆栈的另一个示例。
package com.yiibai;
import java.util.*;
public class ImplementationOfStack2 {
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