2017-06-21 49 views
-3
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行发生了什么?理解线条有问题。栈中的数据结构

+0

欢迎来到StackOverlfow。阅读以及老师给你的材料:https://en.wikipedia.org/wiki/Stack_(abstract_data_type)然后阅读[问]并参加[旅游]。 – Yunnosch

回答

0

基本上给定的伪代码将,

  1. 流行(即除去所述顶部元件)关闭,然后将其推(即其放置在底部(D),然后将其推入堆栈B.
  2. 它会在剩余的元素(G)上查看(即不从堆栈中移除但查看)并推送它到B.

  3. 它会检查堆栈A为空,如果是(这是不是),那么这将推动“Z”到B.

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

+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()); 

这意味着,所看到的是对甲堆栈的顶部,并将其推到B堆栈。但不要将它从堆栈中移除。

|_____|       |____| 
    |_____|       | | 
    |_____|       | 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