一、什么是栈结构
栈结构就是一种线性结构。
分类: 1.顺序栈结构 (数组)
2.链式栈结构 (链表)
特点:后进先出
基本操作:
1.出栈(POP)
2.入栈(Push)
二、准备数据
class DATA{
String name;
int age;
}
class StackType{
static final int MAXLEN = 50;
DATA[] data = new DATA[MAXLEN+1]; //数据元素
int top; //栈顶
}
top=0 时栈为空,top =SIZE时表示栈满,
三、初始化栈结构
在使用顺序栈之前要创建一个空的顺序栈,即初始化顺序栈。
- 申请指定大小的一片内存空间,用来保存栈中数据
- 设置栈顶引用为0,表示一个空栈
StackType STInit(){
StackType p; //申请栈内存
if((p=new StackType())!=null){
p.top=0;
return p;
}
return null;
}
四、判断空栈
boolean STisEmpty(StackType s){
boolean b;
b=(s.top==0);
return b;
}
五、判断满栈
boolean STisFull(StackType s){
boolean b;
b=(s.top==MAXLEN);
return b;
}
六、清空栈
void STClear(StackType s){
s.top=0;
}
七、释放空间
void STFree(StackType s){
if(s!=null)
{
s=null;
}
}
八、入栈
int PushST(StackType s,DATA data){
if(s.top=1>MAXLEN){
return 0; //栈溢出
}
s.data[++s.top]=data; //原素入栈
return 1;
}
九、出栈
- 判断top 是否为空
- 返回栈顶top所指元素
- 设置top=top-1
DATA PopST(StackType s){
if(s.top==0){
System.out.println("栈为空");
}
return s.data[s.top--];
}
十、读节点数据
DATA PeekST(StackType s){
if(s.top==0){
System.out.println("栈为空");
}
return s.data[s.top];
}