【发布时间】:2014-07-21 13:25:02
【问题描述】:
我正在为我的考试做复习,我遇到了这个问题,我需要在执行以下代码后找到 Q1 的内容。
数据
5, 7, 12, 4, 0, 4, 6, 8, 67, 34, 23, 5, 0, 44, 33, 22, 6, 0
Pusedo 代码
Q1=createQueue
S1=createStack
loop (not end of file)
read number
if (number not 0)
pushStack (S1,number)
else
popStack (S1,x)
popStack (S1,x)
loop (not empty S1)
popStack (S1,x)
enqueue (Q1,x)
end loop
end if
end loop
这是我的解决方案
-
如果数字不为0,则将数字压入堆栈 所以现在堆栈变成了
6 22 33 44 5 23 34 67 8 6 4 4 12 7 5 -
否则弹出堆栈的前 2 个元素 所以现在堆栈变成了
33 44 5 23 34 67 8 6 4 4 12 7 5
3.loop stack !empty, pop stack and enqueue in Q1.so 现在栈是空的,队列变成了
5,7,12,4,4,6,8,67,34,23,5,44,33
33 是队列中的第一个,5 是队列的最后一个。
我仔细检查了提供的答案,发现我的答案不同
提供的答案
7,5,34,67,8,6,4,33,44
我不确定谁是正确的。请帮忙。
【问题讨论】:
-
提供的答案似乎是正确的。您似乎假设除零之外的所有数字都在发生其他任何事情之前被压入堆栈,但根据您提供的代码,这是不正确的。尝试一步一步地工作到第一个零,看看会发生什么。请注意,
if嵌套在内部loop。 -
谢谢,我会再解决的
-
将其转换为实际代码并自己运行是很简单的,可能单步执行即可查看所有中间步骤。这样做比要求别人给你答案更能教给你。