一个栈和队列的题目不是很明白,请教一下

pan666 2005-10-23 05:35:10
一个栈和队列的题目不是很明白,请教一下
设栈s=(1,2,3,4,5,6,7,8)
写出调用f后的S
1 void f(stack *s)
2 {
3 Queue Q;
4 Stack T;
5 int i=0;
6 InitQueue(&Q)
7 InitStack(&T0;
8 while(!StackEmpty(S))
9 if((i=!i)!=0) Push(&T,pop(s));
10 else EnQueue(&Q,pop(s));
11 while(!StackEmpty(&T))
12 push(S,pop(&T));
13 while(!QueueEmpty(&Q))
14 push(s,DeQueue(&Q));
15 }
我特别不明白9,10处的意思,谢谢
...全文
136 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
i_noname 2005-10-23
  • 打赏
  • 举报
回复
把i理解成bool类型比较好。
int i = 0; ==> bool i = false;
i = !i;//true ==> false, false ==> true
用X代表(i=!i)
第九句变成
if (X != 0)
即X也为bool型
这样就比较好理解了
8,9,10句为一个循环,
当s还有数据时,交替将数据存入t和q中,也就是t一个,q一个,然后又t一个,q一个...
jixingzhong 2005-10-23
  • 打赏
  • 举报
回复
6 InitQueue(&Q)
7 InitStack(&T0;

初始化函数, 假设是设置 栈指针, 并没有任何的针对数据操作!(就是没有改变数据)

那么:
根据
5 int i=0;
可以判断
8 9 10 语句的实际操作是什么了 (if else 的执行选择可以确定)


后面的两格循环, 就是吧 T 栈 和 D队列 的数据压入 S 中取, 呵呵

应该没有问题了吧 ~
jixingzhong 2005-10-23
  • 打赏
  • 举报
回复
这个题目不太好解答, 只能猜测了, 因为有几个函数没有 ...

先说说语句吧 :

if((i=!i)!=0) Push(&T,pop(s));
等价如下:
i=!i; // BOOL 置反 ~
if((i!=0) Push(&T,pop(s));


jixingzhong 2005-10-23
  • 打赏
  • 举报
回复
这个语句"简化"得有点过分了, 可读性大大下降 ...

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧