最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ 數(shù)據(jù)結(jié)構(gòu)實現(xiàn)兩個棧實現(xiàn)一個隊列

 更新時間:2017年03月18日 08:40:11   投稿:lqh  
這篇文章主要介紹了詳解C++ 數(shù)據(jù)結(jié)構(gòu)實現(xiàn)兩個棧實現(xiàn)一個隊列的相關(guān)資料,需要的朋友可以參考下

C++ 數(shù)據(jù)結(jié)構(gòu)實現(xiàn)兩個棧實現(xiàn)一個隊列

棧為后進(jìn)先出,隊列為先進(jìn)先出

    用兩個棧實現(xiàn)一個隊列。是一個比較經(jīng)典的問題。

看到這個問題,我的第一個解題思路為:

          定義兩個棧,s1,s2。s1作為入隊列棧,s2作為出隊列棧;

                入隊列:每次入隊列的時候,將數(shù)值壓入s1棧中;

                出隊列:出隊列時,將s1中的所有數(shù)據(jù),壓進(jìn)s2棧中,然后刪除s2的棧頂數(shù)據(jù),然后再將s2中的剩余數(shù)據(jù)壓入s1中。

在這其中s1是一個存儲空間,s2是一個輔助空間。

   進(jìn)一步想一下上述辦法,在出隊列時,每一次都要將s1倒進(jìn)s2,然后刪除s2棧頂后又將s2的數(shù)據(jù)倒入s1;有另一個思路可以減少倒的次數(shù);

    入隊列時:將數(shù)據(jù)壓進(jìn)s1;

    出隊列時:判斷如果s2為空,那么將s1中的數(shù)據(jù),壓進(jìn)s2中,然后刪除s2棧頂,如果s2不為空那么再刪除s2的棧頂即可;

并且還可以優(yōu)化,優(yōu)化如下:

           出隊列時,判斷如果s2為空,那么將s1中n-1個數(shù)據(jù),壓進(jìn)s2中,然后刪除s1中的棧頂,如果s2不為空那么直接刪除s2的棧頂即可;

優(yōu)化版的c++實現(xiàn)如下:

#include<iostream> 
using namespace std; 
#include<stack> 
//棧 后進(jìn)先出 隊列 先進(jìn)先出 
template<class T> 
class Queue 
{ 
public: 
 
  /*T Pop_back() 
  { 
    if (s2.size() <= 0) 
    { 
      while(s1.size() > 0) 
      { 
        T& temp = s1.top(); 
        s1.pop(); 
        s2.push(temp); 
      } 
    } 
    if (s2.size() == 0) 
      throw new exception("queue is empty "); 
 
    T tep = s2.top(); 
    s2.pop(); 
    return tep; 
  }*/ 
 
  T Pop_back() //比上面少一次出棧 
  { 
    if (s2.size() <= 0) 
    { 
      while (s1.size() > 1) 
      { 
        T& temp = s1.top(); 
        s1.pop(); 
        s2.push(temp); 
      } 
      T tep = s1.top(); 
      s1.pop(); 
      return tep; 
    } 
    else{ 
      T tep = s2.top(); 
      s2.pop(); 
      return tep; 
    } 
  } 
   
    void Push_back(const T& value) 
  { 
    s1.push(value); 
  } 
 
    bool Empty() 
    { 
      return (s1.empty() && s2.empty()); 
    }       
 
protected: 
  stack<T> s1; 
  stack<T> s2; 
}; 
 
void TextQueue() 
{ 
  Queue<int> q1; 
  q1.Push_back(1); 
  q1.Push_back(2); 
  q1.Push_back(3); 
  q1.Push_back(4); 
 
  cout << q1.Pop_back() << endl; 
  cout << q1.Pop_back() << endl; 
  cout << q1.Pop_back() << endl; 
  cout << q1.Pop_back() << endl; 
} 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • C++無符號整數(shù)溢出問題解析

    C++無符號整數(shù)溢出問題解析

    這篇文章主要介紹了C++無符號整數(shù)溢出探究,本文主要探討C/C++中無符號整數(shù)超過范圍后的計算問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C++變量和基本類型詳解

    C++變量和基本類型詳解

    這篇文章主要介紹了C++變量和基本類型,,一定要注意局部變量與全局變量的作用范圍,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-10-10
  • VC++進(jìn)度條process Bar的用法實例

    VC++進(jìn)度條process Bar的用法實例

    這篇文章主要介紹了VC++進(jìn)度條process Bar的用法,是進(jìn)行VC++應(yīng)用程序開發(fā)中非常常見的實用技巧,需要的朋友可以參考下
    2014-10-10
  • VC++的combobox控件用法匯總

    VC++的combobox控件用法匯總

    這篇文章主要介紹了VC++的combobox控件用法,對VC++初學(xué)者來說尤為重要,需要的朋友可以參考下
    2014-08-08
  • 深入解析C語言中函數(shù)指針的定義與使用

    深入解析C語言中函數(shù)指針的定義與使用

    這篇文章主要介紹了C語言中函數(shù)指針的定義與使用,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-04-04
  • C++共享內(nèi)存刪除的陷阱

    C++共享內(nèi)存刪除的陷阱

    這篇文章主要介紹了C++共享內(nèi)存刪除的陷阱講解,當(dāng)進(jìn)程結(jié)束使用共享內(nèi)存區(qū)時,要通過函數(shù) shmdt 斷開與共享內(nèi)存區(qū)的連接。下面來看看具體問題都是怎么解決的吧
    2022-01-01
  • C++中平衡二叉搜索樹的模擬實現(xiàn)

    C++中平衡二叉搜索樹的模擬實現(xiàn)

    二叉搜索樹雖可以縮短查找的效率,但如果數(shù)據(jù)有序或接近有序二叉搜索樹將退化為單支樹,查找元素相當(dāng)于在順序表中搜索元素,效率低下,所以本文給大家介紹了C++平衡二叉的搜索樹模擬實現(xiàn)方法,需要的朋友可以參考下
    2023-09-09
  • C語言實現(xiàn)航班訂票系統(tǒng)

    C語言實現(xiàn)航班訂票系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)航班訂票系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C++中數(shù)組作為函數(shù)參數(shù)傳入的幾種方式代碼示例

    C++中數(shù)組作為函數(shù)參數(shù)傳入的幾種方式代碼示例

    數(shù)組元素和數(shù)組名都可以作為函數(shù)的參數(shù)以實現(xiàn)函數(shù)間數(shù)據(jù)的傳遞和共享,下面這篇文章主要給大家介紹了關(guān)于C++中數(shù)組作為函數(shù)參數(shù)傳入的幾種方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • C++實踐Time類中的運(yùn)算符重載參考方法

    C++實踐Time類中的運(yùn)算符重載參考方法

    今天小編就為大家分享一篇關(guān)于C++實踐Time類中的運(yùn)算符重載參考方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02

最新評論

张家港市| 夏河县| 屯门区| 南阳市| 广河县| 巴中市| 吴堡县| 连州市| 视频| 丰宁| 澜沧| 峨边| 旌德县| 五家渠市| 洪雅县| 客服| 舟山市| 明星| 玉溪市| 宁安市| 屯昌县| 应城市| 中超| 永嘉县| 兴山县| 丹巴县| 巴楚县| 临潭县| 江口县| 广灵县| 湖口县| 云阳县| 九寨沟县| 谷城县| 二连浩特市| 河东区| 靖州| 霍林郭勒市| 长宁县| 石台县| 林州市|