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

本文共 646 字,大约阅读时间需要 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<

 

转载地址:http://wghgl.baihongyu.com/

你可能感兴趣的文章
第六章:Spring Boot 默认日志框架配置(一)
查看>>
UINavigationController 总结
查看>>
反射中的Method类
查看>>
教你优雅地运用JS模块化编程
查看>>
es6 随笔(一)
查看>>
HIVE数据倾斜总结
查看>>
OCR图文识别软件是怎么保存页面图像的
查看>>
JavaScript学习(二)
查看>>
Android虹软人脸识别sdk使用工具类
查看>>
springmvc 基于注解的controller
查看>>
Windows Phone本地数据库的使用框架和技巧
查看>>
nmap教程之nmap命令使用示例
查看>>
你不需要jQuery(二)
查看>>
linux用户和权限管理
查看>>
关于Linux系统的平均负载最全面介绍
查看>>
卸载一个程序
查看>>
Python-函数进阶
查看>>
mysql集群与存储
查看>>
Purism推出PureBoot以更好地保护Linux计算机
查看>>
pxe自动化部署
查看>>