顺序栈基本操作
1.初始化
置空栈:初始化栈顶指针。
/*初始化*/
SeqStack *initStack(){
SeqStack *s;
s = (SeqStack *)malloc(sizeof(SeqStack)); //动态申请内存
s->top = -1; //空栈时,栈顶指针top=-1
return s;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
2.进栈:首先判断栈是否满了,如果栈满,返回false。否则进栈。
/*进栈*/
void push( SeqStack *s, datatype x ){
if( s->top >= MAXSIZE-1 ){ //判断栈满
printf("栈满!");
}else{
s->top++;
s->data[s->top] = x;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
3.取栈顶元素
/*取栈顶元素*/
int topStack( SeqStack *s ){
datatype x;
if( isEmpty(s) ){ //判断栈是否为空
printf("栈空");
}else{
return x = s->data[s->top];
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
4.判断栈是否为空
/*判断栈是否为空*/
int isEmpty( SeqStack *s ){
if( s->top == -1 ){
return true; //栈空
}else{
return false;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
5.出栈
/*出栈*/
void pop( SeqStack *s, datatype *x ){
if( isEmpty(s) ){ //判断栈空
printf("栈空");
}else{
*x = s->data[s->top]; //将栈顶元素存入*x中
s->top--;
}
}