堆栈在数据结构中

时间:2017-06-21 05:17:06

标签: c

1.B.push (A.pop ()); 
2.B.push (A.pop ()); 
3.B.push (A.peek()); 
4.if (A. IsEmpty())
       A.push('Z'); 
   else 
       B.push ('Z');

      |____|                          |____|
      |____|                          |____|
Top ->|  E |                          |____|
      |  D |                          |____|
      |  G |                          |____|
   stack frame A                    stack frame B

大家好,请问任何人解释1号线到4号线的情况?在理解线条时遇到问题。

3 个答案:

答案 0 :(得分:1)

您从:

开始
      |____|                          |____|
      |____|                          |____|
Top ->|  E |                          |____|
      |  D |                          |____|
      |  G |                          |____|
   stack frame A                    stack frame B

<强> 1

B.push (A.pop ()); 

这意味着,在B堆栈上推送从堆栈顶部检索(删除)的内容。

  |_____|                          |____|
  |_____|                          |    |
  |_____|                          |    |
  |__D__|                          |    |
  |__G__|                          |  E |
 stack frame A                    stack frame B

<强> 2

B.push (A.pop ());

同样在这里。

  |_____|                          |____|
  |_____|                          |    |
  |_____|                          |    |
  |_____|                          |  D |
  |__G__|                          |  E |
 stack frame A                    stack frame B

第3

B.push (A.peek());

这意味着,查看A堆栈顶部的内容,并将其推送到B堆栈。但是不要从A堆栈中删除它。

  |_____|                          |____|
  |_____|                          |    |
  |_____|                          |  G |
  |_____|                          |  D |
  |__G__|                          |  E |
 stack frame A                    stack frame B

<强> 4

if (A. IsEmpty())
       A.push('Z'); 
   else 
       B.push ('Z');

这意味着 - 如果堆栈A为空,则在A上按字母Z,否则在堆栈B上按字母Z.

  |_____|                          |____|
  |_____|                          |  Z |
  |_____|                          |  G |
  |_____|                          |  D |
  |__G__|                          |  E |
stack frame A                    stack frame B

答案 1 :(得分:0)

参考https://en.wikibooks.org/wiki/Data_Structures/Stacks_and_Queues

  • 第1行 - 从A中删除G并将G添加到堆栈B
  • 第2行 - 从A中删除D将D添加到堆栈B
  • 第3行 - 不要从A中删除E并将E添加到B
  • 第4行 - A不为空,因此不会执行第5行。并将Z推到B

答案 2 :(得分:0)

基本上给定的伪代码将是

  1. 从堆栈A(E)中弹出(即移除顶部元素),然后将其推入堆栈B中(即将其置于最底部的位置)。
  2. 弹出堆栈A(D),然后将其推入堆栈B。
  3. 它将在剩余的元素(G)上偷看(即不从堆栈中删除但是查看)并将其推送到B.

  4. 它会检查堆栈A是否为空,如果是(它不是),那么它会将'Z'推到B上。

  5. |____| |____| |____| | Z | |____| | G | |____| | D | | G | | E | stack frame A stack frame B