一、栈
栈:先进后出-从上面进从上面出下层的要取出必须先取上层的
队列:先进先出-先进的排到最后面,后进的在最前面,要出的话从后面出
push(&S,x) 进栈
pop(&S,x) 出栈
顺序栈
#define MaxSize 50 //定义栈中元素的最大个数
typedef struct{
Elemtype data[MaxSize]; //存放栈中元素
int top; //栈顶指针top,初始S.top=-1,
}SqStack;
栈顶指针:S.top,初始为S.top=-1;
栈顶元素:S.data[S.top];top始终指向栈顶元素
进栈:栈不满时,栈顶指针top先加1,再进赋值
出栈:栈非空时,先取栈顶元素,栈顶指针再减1
栈空条件:S.top == -1;
栈满条件:S.top == MaxSize-1;
栈长:S.top+1;
栈基本运算:
(1)初始化栈
void InitStack(&S){
s.top=-1; //初始化栈顶指针
}
(2)判空栈
bool StackEmpty(S){
if(s.top==-1)
return true; //栈空
else
return false; //非空
}
(3)进栈
bool Push(SqStack &S,ElemType x){
if(S.top==MaxSize-1) //栈满则不能进栈,报错
return false;
S.data[++S.top] = x; //指针先加1,x再赋值指针进栈
return true;
}
(4)出栈
bool Pop<