数据结构--顺序栈java实现
1.顺序栈的简单实现,java
(1)接口
public interface IStack {
public void clear(); //清空栈
public boolean isEmpty(); //栈的判空
public Object peek(); //查询栈顶元素
public int length(); //栈的长度
public void push(Object x) throws Exception; //元素入栈
public Object pop(); //栈顶元素出栈
}
(2)实现顺序栈
//顺序栈的实现,java
public class SqStack implements IStack{
private Object[] stackElem; //对象数组
private int top; //top始终指向栈顶元素的上一个元素,栈为空时top=0
//栈的构造函数,构造一个空间为maxSize的栈
public SqStack(int maxSize){
top = 0;
stackElem = new Object[maxSize];
}
//置空顺序栈
@Override
public void clear() {
// TODO Auto-generated method stub
top = 0;
}
//判断是否为空栈
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return top == 0;
}
//取栈顶元素
@Override
public Object peek() {
// TODO Auto-generated method stub
if(isEmpty()){
return null;
}else{
return stackElem[top-1];
}
}
//栈中元素的个数
@Override
public int length() {
// TODO Auto-generated method stub
return top;
}
//元素入栈
@Override
public void push(Object x) throws Exception {
// TODO Auto-generated method stub
if(top == stackElem.length){
throw new Exception("栈满");
}
stackElem[top] = x;
top++;
}
//元素出栈
@Override
public Object pop() {
// TODO Auto-generated method stub
if(isEmpty()){
return null;
}
top--;
return stackElem[top];
}
/*
* 测试用,忽略
*/
// public static void main(String[] args) throws Exception{
// SqStack mystack = new SqStack(5);
// mystack.push(1);
// mystack.push(2);
// mystack.push(3);
// mystack.push(4);
// mystack.push(5);
// System.out.println(mystack.length());
// System.out.println(mystack.isEmpty());
// System.out.println(mystack.peek());
// for(int i=0;i<5;i++){
// System.out.println(mystack.pop());
// }
// System.out.println(mystack.isEmpty());
// System.out.println(mystack.length());
// }
}