构造空栈 Status InitStack(SqStack &S){ /构造一个空栈$ S.base=(SElemType *)malloc (STACK INIT SIZE sizeof(SElemType)); if(IS.base)exit(OVERFLOW);H/存储分配失败 S.top-S.base; S.stacksize=STACK INIT SIZE: return OK; //InitStack
Status InitStack(SqStack &S) { // 构造一个空栈S S.base=(SElemType *) malloc (STACK_INIT_SIZE * sizeof(SElemType)); if (!S.base) exit (OVERFLOW);//存储分配失败 S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK; }//InitStack 构造空栈
Stack GetTop(SqStack S,SElemType &e){ /若栈不空,则用返回S的栈顶元素,并返回OK, /否则返回ERROR; if(S.top-=S.base)return ERROR; e-*(S.top-1); return OK: //GetTop
Stack GetTop (SqStack S,SElemType &e) { //若栈不空,则用e返回S的栈顶元素,并返回OK, //否则返回ERROR; if (S.top==S.base) return ERROR; e=*(S.top-1); return OK; }//GetTop
●入栈算法 ●出栈算法 ●在一个程序中同时使用两个栈 M-1 栈1底 栈1顶 栈2顶 栈2底
⚫入栈算法 0 M-1 栈1底 栈1顶 栈2顶 栈2底 ⚫出栈算法 ⚫在一个程序中同时使用两个栈
入栈 Status Push(SqStack &S,SElemType e){ /插入元素e为新的栈顶元素 if(S.top-S.base>=S.stacksize){ S.base=(ElemType *)realloc (S.base, (S.stacksize+STACKINCREMENT)*sizeof(ElemType));; if(IS.base)exit (OVERFLOW): S.top-S.base+S.stacksize; S.stacksize+=STACKINCREMENT: } *S.top++-e; return OK; //Push
Status Push(SqStack &S,SElemType e) { //插入元素e为新的栈顶元素 if (S.top-S.base>=S.stacksize) { S.base=(ElemType *) realloc (S.base, (S.stacksize+STACKINCREMENT)* sizeof(ElemType));; if (!S.base) exit (OVERFLOW); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; return OK; }//Push 入栈
int push(int s[],int x,int top) if(top=-M) printf("overflow"): return(-M): s[top]-x; return(++top); d
int push(int s[],int x,int top) { if(top==M) { printf("overflow"); return(-M); } s[top]=x; return(++top); }