重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
小编给大家分享一下C++如何使用一个栈实现另一个栈的排序算法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
成都创新互联网站建设提供从项目策划、软件开发,软件安全维护、网站优化(SEO)、网站分析、效果评估等整套的建站服务,主营业务为成都网站制作、网站建设,App定制开发以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。成都创新互联深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!题目:
一个栈中元素类型为整型,现在想将该栈从顶到底按从小到大的顺序排序,只许申请一个辅助栈。
除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序?
算法C++代码:
class Solution { public: //借助一个临时栈排序源栈 static void sortStackByStack(stack& s) { stack * sTemp = new stack ; while (!s.empty()) { int cur = s.top(); s.pop(); //当源栈中栈顶元素大于临时栈栈顶元素时,将临时栈中栈顶元素放回源栈 //保证临时栈中元素自底向上从大到小 while (!sTemp->empty() && cur > sTemp->top()) { int temp = sTemp->top(); sTemp->pop(); s.push(temp); } sTemp->push(cur); } //将临时栈中的元素从栈顶依次放入源栈中 while (!sTemp->empty()) { int x = sTemp->top(); sTemp->pop(); s.push(x); } } };
测试用例程序:
#include#include using namespace std; class Solution { public: //借助一个临时栈排序源栈 static void sortStackByStack(stack & s) { stack * sTemp = new stack ; while (!s.empty()) { int cur = s.top(); s.pop(); //当源栈中栈顶元素大于临时栈栈顶元素时,将临时栈中栈顶元素放回源栈 //保证临时栈中元素自底向上从大到小 while (!sTemp->empty() && cur > sTemp->top()) { int temp = sTemp->top(); sTemp->pop(); s.push(temp); } sTemp->push(cur); } //将临时栈中的元素从栈顶依次放入源栈中 while (!sTemp->empty()) { int x = sTemp->top(); sTemp->pop(); s.push(x); } } }; void printStack(stack s) { while (!s.empty()) { cout << s.top() << " "; s.pop(); } cout << endl; } int main() { stack * s = new stack ; s->push(5); s->push(7); s->push(6); s->push(8); s->push(4); s->push(9); s->push(2); cout << "排序前的栈:" << endl; printStack(*s); Solution::sortStackByStack(*s); cout << "排序后的栈:" << endl; printStack(*s); system("pasue"); }
运行结果:
排序前的栈: 2 9 4 8 6 7 5 排序后的栈: 9 8 7 6 5 4 2
以上是“C++如何使用一个栈实现另一个栈的排序算法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联网站建设公司行业资讯频道!
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。