博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
左神算法书籍《程序员代码面试指南》——1_05用一个栈实现另一个栈的排序
阅读量:4541 次
发布时间:2019-06-08

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

【题目】

一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,

只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。
如何完成排序?

【题解】

将要排序的栈记为stack,申请的辅助栈记为help。在stack上执行pop操作,弹出的元素记为cur。

·如果cur小于或等于help的栈顶元素,则将cur直接压入help;
·如果cur大于help的栈顶元素,则将help的元素逐一弹出,
逐一压入stack,直到cur小于或等于help的栈顶元素,再将cur压入help。
一直执行以上操作,直到stack中的全部元素都压入到help。
最后将help中的所有元素逐一压入stack,即完成排序。

【代码】

1 #pragma once 2 #include 
3 #include
4 5 using namespace std; 6 7 //一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序, 8 //只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。 9 //如何完成排序?10 //11 //我的想法就是有n个数,那就倒腾n次,每次找到一个最小值12 //将要排序的栈记为stack,申请的辅助栈记为help。在stack上执行pop操作,弹出的元素记为cur。13 //·如果cur小于或等于help的栈顶元素,则将cur直接压入help;14 //·如果cur大于help的栈顶元素,则将help的元素逐一弹出,15 // 逐一压入stack,直到cur小于或等于help的栈顶元素,再将cur压入help。16 //一直执行以上操作,直到stack中的全部元素都压入到help。17 // 最后将help中的所有元素逐一压入stack,即完成排序。18 19 20 21 void stackSort(stack
&s)22 {23 if (s.size() < 2)24 return;25 stack
h;26 while (!s.empty())27 {28 int a = s.top();29 s.pop();30 while (!h.empty() && a > h.top())//当原栈顶元素大于h栈顶元素,将h栈数据全部弹出31 {32 s.push(h.top());33 h.pop();34 }35 h.push(a);36 }37 while (!h.empty())//排好的数据返回给原栈38 {39 s.push(h.top());40 h.pop();41 }42 }43 44 45 void printStack(stack
s)46 {47 while (!s.empty())48 {49 cout << s.top() << " ";50 s.pop();51 }52 cout << endl;53 }54 55 void Test()56 {57 stack
s;58 s.push(5);59 s.push(2);60 s.push(3);61 s.push(4);62 s.push(1);63 printStack(s);64 stackSort(s);65 printStack(s);66 }

 

转载于:https://www.cnblogs.com/zzw1024/p/11170573.html

你可能感兴趣的文章
Django Form 的主要内置字段介绍
查看>>
如何写好一个UITableView
查看>>
XML文件生成C++代码(基于rapidxml)
查看>>
写代码,更需要设计代码
查看>>
iOS:修改项目名
查看>>
SpringCloud-Eureka
查看>>
double在输出为字符串的几种方法效率测试
查看>>
ArcGIS API for JavaScript 4.2学习笔记[14] 弹窗的位置、为弹窗添加元素
查看>>
电路基础
查看>>
jquery 对象与DOM对象转换
查看>>
DELPHI 调用系统 ADO 配置窗体 提高软件易用性
查看>>
Mongodb 命令及 PyMongo 库的使用
查看>>
div+css 兼容ie6 ie7 ie8 ie9和FireFox Chrome等浏览器方法(非原创)
查看>>
关于SDWebImage加载高清图片导致app崩溃的问题
查看>>
如何查看方法在哪里被调用
查看>>
HUE的自动化安装部署
查看>>
图片服务器(FastDFS)的搭建
查看>>
myBatis应用
查看>>
RuntimeError: DataLoader worker (pid 18255) is killed by signal: Killed.
查看>>
[PHP] 用AppServ一步到位安装PHP服务器
查看>>