一.栈的定义:(LIFO)
只允许在一端进行插入或删除操作的线性表。 空栈:空的 栈顶:允许插入和删除的一端。(栈顶元素) 栈底:不允许插入和删除的一端。(栈底元素)
二.顺序栈的定义:
#define MaxSize 10
typedef struct{
ElemType data[MaxSize];
int top;
}SqStack;
int main(){
SqStack S;
return 0;
}
void InitStack(SqStack &S){
S.top=-1;
}
bool EmptyStack(SqStack S){
return S.top==-1;
}
三.进栈操作:
增加新元素
bool Push(SqStack &S,int e){
if(S.top==MaxSize-1}
return false;
S.top++;
S.data[S.top]=x;
return true;
}
四.出栈操作:
删除元素
bool Pop(SqStack &S,int &e){
if(S.top==-1}
return false;
e=S.data[S.top];
S.top--;
return true;
五.读栈顶元素:
和出栈操作类似,但是不用top指针不用减减。
bool GetTop(SqStack S,int &e){
if(S.top==-1)
return false;
e=S.data[S.top];
return true;
}
顺序栈也有很大缺点,不能改变栈的大小。
六.共享栈:
定义两个指针,分别指向栈顶和栈底。
#define MaxSize 10
typedef struct{
int data[MaxSize];
int top0;
int top1;
}ShStack;
void InitStack(ShStack &S){
S.top0=-1;
S.top1=MaxSize;
}
判断栈满条件:top0+1=top1
|