2017-06-21 46 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