英文原题:writeaprogramtocombinetwostacksbyplacingallelementsofthesecondstackontopofthoseinthefirst.Therelativeorderingofelementsfromthesecondstackisunchanged.Followingthecombine,thesecondstackisempty.(Hint:youcanusepushandpopmethodsofthosestacksdirectly)意思是:栈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++代码最好
2 回答

蝴蝶不菲
TA贡献1810条经验 获得超4个赞
1楼答案过于麻烦。只需要用到一个临时栈就行了。过程为:创建临时栈t将栈2中的元素依次弹出到t中,这时候t的内容为10,9,8,7,6将t中的元素再依次弹出到栈1中,栈1此时的顺序正好是从1到10

潇潇雨雨
TA贡献1833条经验 获得超4个赞
假设栈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/150
提交
取消