顺序栈
栈的顺序存储结构成为顺序栈。
顺序栈的本质是顺序表的简化,唯一需要确定的是用数组的那一端标示栈底。通常把数组下标为0的一端作为栈底,同时设指正top指示栈顶元素在数组中的位置。设存储栈元素的数组长度为stackSize,则栈空时,指针top=-1;栈满时,指针top=stackSize-1.入栈时指针top=top+1;出栈时,指针top=top-1;
顺序栈的实现
/**
*
* @ClassName: SquentialStack.java
* @Description: 顺序栈的实现
* @Copyright: Copyright (c) 2017
* @author 周扬
* @date 2017年6月6日 下午3:26:13
* @version V1.0
*/
public class SquentialStack {
/** 数组的长度 **/
private int maxSize = 10;
/** 存放栈元素的数组 **/
private Object[] data = new Object[maxSize];
/** 栈顶指针 **/
private int top;
public SquentialStack() {
top = -1;
}
/**
* @MethodName: push
* @Description: 入栈操作
* @param obj
* @author 周扬
* @throws Exception
* @date 2017年6月6日 下午3:16:21
*/
public void push(Object obj) throws Exception {
// 判断是否栈满
if (top == maxSize - 1) {
throw new Exception("栈满");
}
// 存入元素
data[top + 1] = obj;
// 指针上移
top++;
}
/**
* @MethodName: pop
* @Description:出栈
* @return
* @author 周扬
* @throws Exception
* @date 2017年6月6日 下午3:18:47
*/
public Object pop() throws Exception {
// 判断是否空栈
if (top == -1) {
throw new Exception("空栈");
}
// 获取栈顶元素
Object obj = data[top];
// 释放栈顶元素空间
data[top] = null;
//指针下移
top--;
// 返回栈顶元素
return obj;
}
/**
* @MethodName: getTop
* @Description: 获取栈顶元素
* @return
* @throws Exception
* @author 周扬
* @date 2017年6月6日 下午3:22:23
*/
public Object getTop() throws Exception {
// 判断是否空栈
if (top == -1) {
throw new Exception("空栈");
}
// 返回栈顶元素
return data[top];
}
/**
* @MethodName: empty
* @Description: 判断是否为空栈,是返回1,否返回0
* @return
* @author 周扬
* @date 2017年6月6日 下午3:24:29
*/
public int empty(){
if(top==-1){
return 1;
}
return 0;
}
}