博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
careercup-栈与队列 3.6
阅读量:5163 次
发布时间:2019-06-13

本文共 700 字,大约阅读时间需要 2 分钟。

3.6 编写程序,按升序对栈进行排序(即最大元素位于栈顶)。最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中(如数组)。该栈支持如下操作:push、pop、peek和isEmpty。

 

解答

 

使用一个附加的栈来模拟插入排序。将原栈中的数据依次出栈与附加栈中的栈顶元素比较, 如果附加栈为空,则直接将数据压栈。否则, 如果附加栈的栈顶元素小于从原栈中弹出的元素,则将附加栈的栈顶元素压入原栈。 一直这样查找直到附加栈为空或栈顶元素已经大于该元素, 则将该元素压入附加栈。

C++实现代码:

#include
#include
using namespace std;void stackSort(stack
&st){ stack
t; while(!st.empty()) { int data=st.top(); st.pop(); while(!t.empty()&&t.top()
st; int arr[10]={
2,4,6,1,3,5,7,8,9,0}; for(int i=0;i<10;i++) st.push(arr[i]); stackSort(st); while(!st.empty()) { cout<
<<" "; st.pop(); } cout<

 

转载于:https://www.cnblogs.com/wuchanming/p/4143787.html

你可能感兴趣的文章
飞机大战项目
查看>>
JZYZOJ1383 [usaco2003feb]impster 位运算 最短路
查看>>
poj_3627Bookshelf
查看>>
java输入输入流图解
查看>>
html5改良的input元素的种类
查看>>
python人脸识别开源库face_recognition
查看>>
【神经网络与深度学习】转-caffe安装吐血总结
查看>>
【VS开发】进程线程及堆栈关系的总结
查看>>
vue三、示例
查看>>
计算机网络资料 - 转
查看>>
string中substr,find函数使用
查看>>
前台后台数据的传递
查看>>
hive基本操作与应用
查看>>
Net基础篇_学习笔记_第十天_方法_方法的练习
查看>>
网站与域名知识扫盲
查看>>
angular自定义指令
查看>>
re正则模块
查看>>
iOS UIButton按钮 UILabel 文本
查看>>
【BZOJ 3681】Arietta
查看>>
leetcode: Letter Combinations of a Phone Number
查看>>