国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

C++使用一個(gè)棧實(shí)現(xiàn)另一個(gè)棧的排序算法示例

2020-01-26 14:09:43
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了C++用一個(gè)棧實(shí)現(xiàn)另一個(gè)棧的排序算法。分享給大家供大家參考,具體如下:

題目:

一個(gè)棧中元素類型為整型,現(xiàn)在想將該棧從頂?shù)降装磸男〉酱蟮捻樞蚺判颍辉S申請(qǐng)一個(gè)輔助棧。

除此之外,可以申請(qǐng)新的變量,但不能申請(qǐng)額外的數(shù)據(jù)結(jié)構(gòu)。如何完成排序?

算法C++代碼:

class Solution{public:  //借助一個(gè)臨時(shí)棧排序源棧  static void sortStackByStack(stack<int>& s)  {    stack<int>* sTemp = new stack<int>;    while (!s.empty())    {      int cur = s.top();      s.pop();      //當(dāng)源棧中棧頂元素大于臨時(shí)棧棧頂元素時(shí),將臨時(shí)棧中棧頂元素放回源棧      //保證臨時(shí)棧中元素自底向上從大到小      while (!sTemp->empty() && cur > sTemp->top())      {        int temp = sTemp->top();        sTemp->pop();        s.push(temp);      }      sTemp->push(cur);    }    //將臨時(shí)棧中的元素從棧頂依次放入源棧中    while (!sTemp->empty())    {      int x = sTemp->top();      sTemp->pop();      s.push(x);    }  }};

測(cè)試用例程序:

#include <iostream>#include <stack>using namespace std;class Solution{public:  //借助一個(gè)臨時(shí)棧排序源棧  static void sortStackByStack(stack<int>& s)  {    stack<int>* sTemp = new stack<int>;    while (!s.empty())    {      int cur = s.top();      s.pop();      //當(dāng)源棧中棧頂元素大于臨時(shí)棧棧頂元素時(shí),將臨時(shí)棧中棧頂元素放回源棧      //保證臨時(shí)棧中元素自底向上從大到小      while (!sTemp->empty() && cur > sTemp->top())      {        int temp = sTemp->top();        sTemp->pop();        s.push(temp);      }      sTemp->push(cur);    }    //將臨時(shí)棧中的元素從棧頂依次放入源棧中    while (!sTemp->empty())    {      int x = sTemp->top();      sTemp->pop();      s.push(x);    }  }};void printStack(stack<int> s){  while (!s.empty())  {    cout << s.top() << " ";    s.pop();  }  cout << endl;}int main(){  stack<int>* s = new stack<int>;  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");}

運(yùn)行結(jié)果:

排序前的棧:2 9 4 8 6 7 5排序后的棧:9 8 7 6 5 4 2

希望本文所述對(duì)大家C++程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宝兴县| 石台县| 贵州省| 贵定县| 海城市| 许昌县| 达日县| 广水市| 左贡县| 海阳市| 措美县| 潞西市| 普兰县| 二连浩特市| 达尔| 阿坝| 渭南市| 南汇区| 黄陵县| 乌兰浩特市| 长海县| 北票市| 大悟县| 绥德县| 高州市| 庆元县| 祥云县| 江孜县| 工布江达县| 博爱县| 伊川县| 松阳县| 喀什市| 大港区| 德钦县| 扎兰屯市| 郁南县| 昌平区| 苏州市| 成安县| 清涧县|