搜尋

首頁  >  問答  >  主體

数据结构和算法 - 关于c++栈结构算法题

英文原题:write a program to combine two stacks by placing all elements of the second stack on top of those in the first. The relative ordering of elements from the second stack is unchanged. Following the combine, the second stack is empty. (Hint: you can use push and pop methods of those stacks directly)

意思是:栈1存有 1,2,3,4,5;栈2存有6,7,8,9,10;如何让栈2中的原有数据保持顺序不变而放入栈1中;实现效果是:栈1存有1,2,3,4,5,6,7,8,9,10;栈2为空;

能贴上c++代码最好

PHP中文网PHP中文网2808 天前704

全部回覆(2)我來回復

  • ringa_lee

    ringa_lee2017-04-17 13:02:51

    1樓答案過於麻煩。只需要用到一個臨時棧就行了。過程為:

    1. 建立臨時堆疊t

    2. 栈2中的元素依序彈出到t中,這時候t的內容為10,9,8,7,6

    3. t中的元素再依序彈出到栈1中,栈1此時的順序正好是從1到10

    回覆
    0
  • 黄舟

    黄舟2017-04-17 13:02:51

    假設棧1裡的數依照從棧頂到棧底12345排序,棧2依照5678910排序。現在新建一個棧3,將棧1中的資料依序出棧到棧3中,此時棧3中的資料從棧頂到棧底為54321,棧1此時為空。再新建一個棧4,將棧2中的資料依序入棧4,則在對入棧操作後,棧4中的資料此時從棧頂到棧底為109876。然後再將棧4入棧1,對棧1入棧操作後,棧1中資料從頂到底為678910,同樣,再將棧3入棧1,那麼入棧後,棧1此時數據從頂到底為1234567891。
    現在,四個棧的狀態是,棧2為空,棧3為空(過渡棧),棧4為空(過渡棧),棧1為12345678910。

    回覆
    0
  • 取消回覆