顺序堆栈:
package cn.ls.stack;
/**
*
*自定义接口.
*/
public interface Stack {
//入栈
public void push(Object obj) throws Exception;
//出栈
public Object pop() throws Exception;
//栈顶元素
public Object getTop() throws Exception;
//判断空
public boolean notEmpty();
}
package cn.ls.stack;
/**
*
*堆栈类
*/
public class SeqStack implements Stack {
final int defaultSize = 10;
int top;
Object[] stack;
int maxStackSize;
public SeqStack() {
initiate(defaultSize);
}
public SeqStack(int sz) {
initiate(sz);
}
private void initiate(int sz) {
maxStackSize = sz;
top = 0;
stack = new Object[sz];
}
public void push(Object obj) throws Exception {
if (top == maxStackSize) throw new Exception("堆栈已满!");
stack[top] = obj;
top++;
}
public Object pop() throws Exception {
if (top == 0) throw new Exception("堆栈已空!");
top--;
return stack[top];
}
public Object getTop() throws Exception {
if (top == 0) throw new Exception("堆栈已空!");
return stack[top - 1];
}
public boolean notEmpty() {
return (top > 0);
}
}
package cn.ls.stack;
/**
*
*测试类.
*/
public class SeqStackTest {
public static void main(String[] args) {
SeqStack myStack = new SeqStack();
int test[] = { 1, 3, 5, 7, 9 };
int n = 5;
try {
for (int i = 0; i < n; i++)
myStack.push(new Integer(test[i]));
System.out.println("当前栈顶元素为:" + myStack.getTop());
System.out.print("出栈元素序列为:");
while (myStack.notEmpty())
System.out.print(myStack.pop() + " ");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
测试结果如下:
当前栈顶元素为:9
出栈元素序列为:9 7 5 3 1