栈 stack
栈顶 top
栈底 bottom
后进先出 Last In First Out,LIFO
指针相减得到中间差的元素个数;
结构体变量也可以作为函数参数,但修改后不会返回给主调函数;
顺序栈初始化
typedef struct {
SElemtype* base;
SElemtype* top;
int stacksize;
}SqStack;
Status InitStack(SqStack *s) {
s->base = (SElemtype*)malloc(MAXSIZE * sizeof(SElemtype));
if(!s->base) return(overflow);
s->top = s->base;
s->stacksize=MAXSIZE;
return OK;
}
进栈
Status Push(SqStack *s, SElemtype e)
{
if (s->base-s->top==s->stacksize)//合法性检查(栈是否满)
return ERROR;
*(s->top)= e;
(s->top)++;
return OK;
}
出栈:
Status Pop(SqStack* s, SElemtype *e) {
if (s->base == s->top) {
return ERROR;
}
*e = *--s->top;//e = *(s->top);s->top--;
return OK;
}