public interface StackInterface<E> {
boolean stackEmpty();//判断栈是否为空
boolean stackFull();//判断栈是否为满
void clearStack();//清空栈
int stackLength();//已有元素的个数
Object pop() throws Exception;//元素出栈,栈顶下降
void stackTraverse();//遍历栈中的所有元素
boolean push(E element);//元素入栈,栈顶上升
}
public class MyStack<E> implements StackInterface<E>{
private int Size;//容量
private E[] Stack;//数组
private int Top;//长度和栈顶
@SuppressWarnings("unchecked")
public MyStack(int Size) {
this.Size = Size;
Stack = (E[]) new Object[Size];
clearStack();
}
@Override
public boolean stackEmpty() {
// TODO Auto-generated method stub
return (0==Top?true:false);
}
@Override
public boolean stackFull() {
// TODO Auto-generated method stub
return (Top==Size?true:false);
}
@Override
public void clearStack() {
// TODO Auto-generated method stub
Top = 0;
}
@Override
public int stackLength() {
// TODO Auto-generated method stub
return Top;
}
@Override
public boolean push(E element) {
// TODO Auto-generated method stub
if(stackFull()) {
return false;
}
Stack[Top] = element;
Top++;
return true;
}
@Override
public E pop() throws Exception {
// TODO Auto-generated method stub
if(stackEmpty()) {
throw new Exception();
}
Top--;
return Stack[Top];
}
@Override
public void stackTraverse() {
// TODO Auto-generated method stub
for(int i=0;i<Top;i++) {
System.out.print(Stack[i]+" ");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MyStack<String> stack = new MyStack<>(7);
stack.push("i");
stack.push("l");
stack.push("o");
try {
String temp = (String)stack.pop();
System.out.println("出栈的是: "+temp);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
stack.push("u");
System.out.println("满?"+stack.stackFull()+" "+"空?"+stack.stackEmpty()+" "+"长度:"+stack.stackLength());
stack.stackTraverse();
}
}