通常0下标端设为栈底,这样空栈时栈顶指针top=-1;入 栈时,栈顶指针加1,即s>top++;出栈时,栈顶指针减 1,即>0op=。栈操作的示意图如图所示 EDCBA A EDCBA2 (a空栈 b)一个元素()5个元素(d3个元素(e)空栈 图(a)是空栈,图(c)是A、B、C、D、E5个元素依次入栈之后,图(d)是在 图(c)之后E、D相继出栈,此时栈中还有3个元素,或许最近出栈的元素D、 E仍然在原先的单元存储着,但top指针已经指向了新的栈顶,则元素D、E 已不在栈中了。 2021年1月21日 数据结构讲义
2021年1月21日 数据结构讲义 6 • 通常0下标端设为栈底,这样空栈时栈顶指针top=-1; 入 栈时,栈顶指针加1,即s->top++; 出栈时,栈顶指针减 1,即s->top--。栈操作的示意图如图所示。 图(a)是空栈,图(c)是A、B、C、D、E 5个元素依次入栈之后,图(d)是在 图(c)之后E、D相继出栈,此时栈中还有3个元素,或许最近出栈的元素D、 E仍然在原先的单元存储着,但top指针已经指向了新的栈顶,则元素D、E 已不在栈中了
(1)置空栈 首先建立栈空间,然后初始化栈顶指针。 SeqStack *Init Seqstack i Seqstack * S, =malloc(sizeof( SeqStack) S->top=-1 return s 2021年1月21日 数据结构讲义
2021年1月21日 数据结构讲义 7 ⑴ 置空栈 首先建立栈空间,然后初始化栈顶指针。 SeqStack *Init_SeqStack( ) { SeqStack *s; s=malloc(sizeof(SeqStack)); s->top= -1; return s; }
(2)判空栈 int Empty Seqstack(Seqstack*s d if(s->top==-1) return 1 else return 0 2021年1月21日 数据结构讲义
2021年1月21日 数据结构讲义 8 ⑵判空栈 int Empty_SeqStack(SeqStack *s) { if (s->top= = -1) return 1; else return 0; }
(3)入栈 int Push Seq Stack(SeqStack*s, datatype x Rif(s->top==MAXSIZE-1 return 0 /栈满不能入栈* else i S->top++ S->data[s->top]=X, return 1 2021年1月21日 数据结构讲义
2021年1月21日 数据结构讲义 9 ⑶入栈 int Push_SeqStack(SeqStack *s, datatype x) {if (s->top= =MAXSIZE-1) return 0; /*栈满不能入栈*/ else { s->top++; s->data[s->top]=x; return 1; } }
(4)出栈 P int Pop_ SeqStack(SeqStack*s, datatype*x) f if(Empty Seqstack (s)) return 0 *栈空不能出栈* else (Axs->data[s->top S->top--, return }/栈顶元素存入*x,返回* 2021年1月21日 数据结构讲义 10
2021年1月21日 数据结构讲义 10 ⑷出栈 int Pop_SeqStack(SeqStack *s, datatype *x) { if (Empty_SeqStack(s)) return 0; /*栈空不能出栈 */ else { *x=s->data[s->top]; s->top--; return 1; } /*栈顶元素存入*x,返回*/ }