日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用双栈实现一个队列

發布時間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用双栈实现一个队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在往上看到這樣的題目:

?

大體的有如下幾個思路:

  1?一個棧維護隊列的內容,當入隊列的操作的時候就直接入s1棧,當出隊列的時候就現將s1棧底以外的內容都push到s2中保存起來,將s1棧底返回后將s2內容在彈回來。

  2 s1作為壓棧之用,s2作為出棧之用。入隊列的時候就直接檢查s1中有無對象,沒有檢查s2,如果s2中有對象就將s2中值全部彈回s1,再將新的對象入棧。

  3 最后一種與上面相同,不過棧的作用發生了改變。

這里就簡單列出第二種的實現: (同理的,雙隊列實現棧也可以類似的實現,且方法也是類似的)

1 class Stack{ 2 //... 3 void push(int ); 4 int pop(); 5 int count(); 6 //... 7 }; 8 9 class Queue{ 10 public: 11 void enqueue(int ); 12 int dequeue(); 13 int count() const; 14 private: 15 Stack s1; 16 Stack s2; 17 }; 18 19 //1為入棧用,2作為出棧用 20 void Queue::enqueue(int obj) 21 { 22 if(s1.count() == 0 && s2.count() != 0){ 23 while(s2.count() != 0){ 24 s1.push(s2.pop()); 25 } 26 s1.push(obj); 27 }else{ 28 s1.push(obj); 29 } 30 } 31 32 int Queue::dequeue() 33 { 34 if(s2.count() == 0 && s1.count() != 0){ 35 while(s1.count() != 0){ 36 s2.push(s1.pop()); 37 } 38 return s2.pop(); 39 }else{ 40 if(s2.count() != 0) 41 return s2.pop(); 42 } 43 }

?

轉載于:https://www.cnblogs.com/-wang-cheng/p/4900987.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的使用双栈实现一个队列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。