顺序栈的类型表示: #define stacK nit size 1oo #define stacKincrement 10 typedef char StackData typedef struct{顺序栈定义 StackData*base;/栈底指针 StackData *top;/栈顶指针 int stacksize;/当前已分配的存储空间 3 Seqstack
顺序栈的类型表示: #define STACK_INIT_SIZE 100; #define STACKINCREMENT 10; typedef char StackData; typedef struct { //顺序栈定义 StackData *base; //栈底指针 StackData *top; //栈顶指针 int stacksize;//当前已分配的存储空间 } SeqStack;
顺序栈的基本运算: 判栈空 int StackEmpty(SeqStack *S)i if(S->top==S->base) return1/判栈空,空则返 回1 else return0;/则返回0 判栈满 int StackFull(SeqStack *S)t if( s->top-S->base > s-> StackSize )return 1 /判栈满,满则返回1 else return0;/否则返回0
▪ 判栈空 int StackEmpty (SeqStack *S) { if( S->top == S->base ) return 1 //判栈空,空则返 回1 else return 0; //否则返回0 } ▪ 判栈满 int StackFull (SeqStack *S) { if( S->top- S->base >= S-> StackSize ) return 1 //判栈满,满则返回1 else return 0; //否则返回0 } 顺序栈的基本运算:
初始化 void initstack( Seqstack*S){/置空栈 S->base=( StackData*)malloc(STACK INIT SIZE sizeof(StackData)); if(s->base)exit(OVERFLOW); S-top= S->base S->stacksize= STACK INIT SIZE Return ok;
▪初始化 void InitStack ( SeqStack *S) { //置空栈 S->base =( StackData *)malloc(STACK_INIT_SIZE * sizeof(StackData)); if (!S->base) exit(OVERFLOW); S->top = S->base ; S->stacksize= STACK_INIT_SIZE ; Return ok; }
入栈 int Push(Seqstack"S, StackData x)i /插入元素x为新的栈顶元素 if( Stack Full(s)) S->base=( StackData*)malloc(S->base (S->stacksize+ STACKINCREMENT)X sizeof(StackData) if(! S-> base)exit(overflow) S->top=S->base +S->stacksize S-> estacksize+= STACKINCREMENT;/追加存储空间 S->top)=x; (S->top)++ Return ok
▪ 入栈 int Push (SeqStack *S, StackData x) { //插入元素x为新的栈顶元素 if ( StackFull (S) ){ S->base =( StackData *)malloc(S->base , (S->stacksize+ STACKINCREMENT) * sizeof(StackData)); if(! S->base)exit(overflow); S->top= S->base + S->stacksize; S->stacksize+= STACKINCREMENT; //追加存储空间 } *(S->top)=x; (S->top)++; Return ok }
取栈顶元素 int Gettop (Seqstack*S, StackData &x)i /若栈空返回0,否则栈顶元素读到x并返回1 if( StackEmpty(s)) return 0; (S->top) X=*(S->top); return 1
▪ 取栈顶元素 int Gettop (SeqStack *S, StackData &x) { //若栈空返回0, 否则栈顶元素读到x并返回1 if ( StackEmpty(S) ) return 0; (S->top)--; x = *(S->top); return 1; }