• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wchenfeng

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

关于顺序栈的退栈和入栈操作

代码

Void main()

{

Stack S;Char x,y;

InitStack(S);

x='c';y='k';

push(S,x);push(S,'a');push(S,y);                           ---(1)

pop(S,x);push(S,'t');push(S,x);                              ---(2)

pop(S,x);push(S,'s');                                              ---(3)

while(!StackEmpty(S)){Pop(S,y);printf(y);};            ---(4)

printf(x);                                                                  ---(5)

}

解析

以上面这个代码为例子,初步探索。

首先x='c';y='k';

(1)push(S,x);push(S,'a');push(S,y);

push(S,x);      入栈操作, 变量x入栈,就是'c'入栈

push(S,'a');    入栈操作,然后'a'入栈,

push(S,y);     入栈操作, 变量y入栈,就是'k'入栈

此时,栈从栈顶到栈底排列为:

k

a

c

(2)pop(S,x);push(S,t');push(S,x);

pop(S,x);        出栈操作,栈顶元素开始出栈,x取退栈元素,x='k'

push(S,'t');      入栈操作,'t'入栈

push(S,x);      入栈操作,变量x入栈,就是'k'入栈

此时,栈从栈顶到栈底排列为:

k

t

a

c

(3)pop(S,x);push(S,'s');

pop(S,x);       出栈操作,栈顶元素开始出栈,x取退栈元素,x='k'

push(S,'s');    入栈操作,'s'入栈

此时,栈从栈顶到栈底排列为:

s

t

a

c

(4)while(!StackEmpty(S)){Pop(S,y);printf(y);}; 

第一次循环:while(!StackEmpty(S))    判断S是否是空栈,不是空栈就进行循环

Pop(S,y);       出栈操作,栈顶元素开始出栈,y取退栈元素,y='s'

printf(y);         打印变量y

整个函数打印:

s

第二次循环:while(!StackEmpty(S))    判断S是否是空栈,不是空栈就进行循环

Pop(S,y);       出栈操作,栈顶元素开始出栈,y取退栈元素,y='t'

printf(y);         打印变量y

整个函数打印:

s

t

第三次循环:while(!StackEmpty(S))    判断S是否是空栈,不是空栈就进行循环

Pop(S,y);       出栈操作,栈顶元素开始出栈,y取退栈元素,y='a'

printf(y);         打印变量y

整个函数打印:

s

t

a

第四次循环:while(!StackEmpty(S))    判断S是否是空栈,不是空栈就进行循环

Pop(S,y);       出栈操作,栈顶元素开始出栈,y取退栈元素,y='c'

printf(y);         打印变量y

整个函数打印:

s

t

a

c

第五次循环:while(!StackEmpty(S))    判断S是否是空栈,是空栈就退出循环

(5)printf(x);       打印变量x,打印'k'

整个函数打印:

s

t

a

c

k

posted on 2022-04-12 20:02  王陈锋  阅读(364)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3