首页  >  问答  >  正文

数据结构和算法 - 关于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中文网2765 天前672

全部回复(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
  • 取消回复