3.1栈(堆栈) 进函数Push(,e)的实现 多算法思想:若栈满返回0;否则将e入栈,并返回1 相当于顺序表的 Listlnserto(L,n+1,e) int Push(sqstack*S, Elem Type e) e=78 if(s->top==MaxSize-1) 栈s return0;/传已满即上溢返 axSize-I s->top++;/栈顶“指针”加1 s→> data s→>top=e将e值放入栈顶 return 1 top→2L26 8 S→>top++; s->data[s->top=e; S->data[++s->topHtey2 栈底
11 int Push(SqStack *s,ElemType e) { if(s->top==MaxSize-1) return 0;//栈已满(即上溢),返回0 s->top++;//栈顶“指针”加1 s->data[s->top]=e;//将e值放入栈顶 return 1; } top 栈底 -1 0 1 2 MaxSize-1 … 栈s 26 8 12 3 e=78 s s->top++; s->data[s->top]=e; s->data[++s->top]=e; 3.1 栈(堆栈) ⚫ 进栈函数Push(s,e)的实现 算法思想:若栈满返回0;否则将e入栈,并返回1 相当于顺序表的ListInsert(L,n+1,e)
3.1栈(堆栈) ●进函数Push(,e)的实现 int Push(sqstack*S, ElemType e) if(s->top==MaxSize-1) return0;/栈已满(即上溢,返回0 s->data|++s->topl=e;/将e值进栈 return 1 12
12 int Push(SqStack *s,ElemType e) { if(s->top==MaxSize-1) return 0;//栈已满(即上溢),返回0 s->data[++s->top]=e;//将e值进栈 return 1; } 3.1 栈(堆栈) ⚫进栈函数Push(s,e)的实现
3.1栈(堆栈) 出函数Pop(s,)的实现 多算法思想:若栈空返回0;否则返回栈顶元素并将 其赋给e,然后返回1。相当于顺序表的 ListDelete(L,n,e) 调用语句Pop(s,e) int Pop(sqstack*&s, ElemType &e) 栈s if(s->top==-1) assize- return0/传钱为空下溢) e=s→> data.->topl∥/将栈顶元素赋给e3 s→>top-;/修改栈顶指针 top→226 return1;/回出栈成功标志 18 012 栈底 3
13 int Pop(SqStack *&s,ElemType &e) { if(s->top==-1) return 0;//栈为空(下溢) e=s->data[s->top];//将栈顶元素赋给e s->top--;//修改栈顶指针 return 1;//返回出栈成功标志 } top -1 栈底 0 1 2 MaxSize-1 … 栈s 26 8 12 3 调用语句:Pop(s,e) e 26 = 3.1 栈(堆栈) ⚫ 出栈函数Pop(s,e)的实现 算法思想:若栈空返回0;否则返回栈顶元素并将 其赋给e,然后返回1。相当于顺序表的ListDelete(L, n, e)
3.1栈(堆栈) ●出传线的数Pop(s,e)的实 int Pop(sqstack*&s, Elem Type &e) if(s->top==-1) return0;/栈为空中(下溢) e=s-> data s→top-;/出栈并将出栈元素赋给e return1;/返回出栈成功标志
14 int Pop(SqStack *&s,ElemType &e) { if(s->top==-1) return 0;//栈为空中(下溢) e=s->data[s->top--];//出栈并将出栈元素赋给e return 1;//返回出栈成功标志 } 3.1 栈(堆栈) ⚫出栈函数Pop(s,e)的实现
3.1栈(堆栈) 「例3.4编写一个算法,利用顺序栈判断一个字 符串是否为对称串。所谓对称串是指从左向右 读和从右向左读的序列相同。 如字串:“bcb”从左向右读为“bccb”,从右向 左读为“bccb”,所以该字串是个对称串
15 [例3.4]编写一个算法,利用顺序栈判断一个字 符串是否为对称串。所谓对称串是指从左向右 读和从右向左读的序列相同。 如字串:“bccb”从左向右读为“bccb”,从右向 左读为“bccb”,所以该字串是个对称串 3.1 栈(堆栈)