初识数据结构
##顺序栈的基本操作
//结构体定义栈
typedef char ElemType;
typedef struct{
ElemType *base;
ElemType *top;
int stacksize;
}sqstack;
//初始化栈
void Initstack(sqstack *s){
s->base = (ElemType *)malloc(MAXSIZE *sizeof(ElemType)); //申请动态空间
if( !s->base) {
exit(0);
}
s->top = s->base;
s->stacksize=STACKINCREMENT; //额外增加长度
}
//压栈
void Push(sqstack *s,ElemType e){
if( s->top-s->base >=s->stacksize){
s->base = (ElemType *)realloc(s->base,(s->stacksize + STACKINCREMENT) * sizeof(ElemType));
if(!s->base){
exit(0);
}
}
*(s->top) = e;
s->top ++;
}
//退栈
void Pop(sqstack *s,ElemType *e){ //指针使用->,普通成员使用.
if(s->top == s->base){
return;
}
*e = *--(s->top);
}
//栈长
int StackLen(sqstack s){
return(s.top - s.base);
}