堆栈和队列

我正在修改我的考试,并且遇到了这个问题,我需要在执行下面的代码后找到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,弹出堆栈并在Q1.入队,现在堆栈为空,队列变为

    5,7,12,4,4,6,8,67,34,23,5,44,33
    

    33是队列中的第一个,5是最后一个队列。

    我仔细检查了提供的答案,发现我的答案不同

    提供的答案

    7,5,34,67,8,6,4,33,44
    

    我不确定谁是正确的。 请帮忙。


    你推理的方向是正确的,但输入中有三个零,而你似乎只为最后一个做else逻辑。 请记住,else子句也在循环中。 尝试处理输入,直到他们逐一。

    链接地址: http://www.djcxy.com/p/79863.html

    上一篇: stack and queue

    下一篇: Queues and Stacks and References