店Status Push (SgStack &S, SElemType e) if(S.top- S.base >= S.stacksize){//栈满,追加存储空间S.base = (SElemType *) realloc ( S.base?(S.stacksize + STACKINCREMENT)sizeof (SElemType)):if!S.base)exit(OVERFLOW)://存储分配失败S.top = S.base + S.stacksize;S.stacksize += STACKINCREMENT人*S.top++ = e;return OK:
Status Push (SqStack &S, SElemType e) { if (S.top - S.base >= S.stacksize) {//栈满,追加存储空间 S.base = (SElemType *) realloc ( S.base, (S.stacksize + STACKINCREMENT) * sizeof (SElemType)); if (!S.base) exit (OVERFLOW); //存储分配失败 S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; } *S.top++ = e; return OK; }
Status Pop (SqStack &S, SElemType &e) //若栈不空,则删除S的栈顶元素,//用e返回其值,并返回OK://否则返回ERRORif (S.top == S.base) return ERROR;e = *--S.top:return OK:
Status Pop (SqStack &S, SElemType &e) { // 若栈不空,则删除S的栈顶元素, // 用e返回其值,并返回OK; // 否则返回ERROR if (S.top == S.base) return ERROR; e = *-S.top; return OK; }
在一个程序中同时使用两个栈0M-1栈1底栈1顶栈2顶栈2底
0 M-1 栈1底 栈1顶 栈2顶 栈2底 在一个程序中同时使用两个栈
★链栈栈的链式存储结构。栈顶指针就是链表的头指针。栈顶指针analan-1注意注意:链栈中的指针方向指针的方向
链栈 栈的链式存储结构。栈顶指针就是 链表的头指针。 栈顶指针 an a1 ∧ 注意: 链栈中 指针的方向 an-1 注意: 链栈中 指针的方向 注意:链栈中的指针方向
*入栈操作topO栈底Op->next=top; top=p出栈操作top栈底topΛ1q=top; top=top->next
❖ 入栈操作 ❖ 出栈操作 . ^ 栈底 top top x p top . ^ 栈底 top q p->next=top ; top=p q=top ; top=top->next