用佇列在 C++ 中實現堆疊


假定我們想用佇列實現一個堆疊。那麼,我們必須為這個堆疊定義如下方法。

  • push(x) − 將 x 壓入堆疊中。

  • pop() − 刪除堆疊中頂部元素並返回。

  • top() − 返回堆疊中頂部元素。

  • empty() − 返回堆疊是否為空。

因此,如果我們呼叫 push(10)、push(20) 這兩個函式,然後呼叫 pop()、pop(),則輸出將是 20、10

為了解決這個問題,我們將遵循以下步驟 −

  • 定義一個雙端佇列 q

  • 定義一個函式 push(),它將獲取 x

  • 將 x 插入到 q 的開頭

  • 定義一個函式 pop()

  • k := q 的第一個元素

  • 刪除 q 的前端元素

  • 返回 k

  • 定義一個函式 top()

  • 返回 q 的第一個元素

  • 定義一個函式 empty()

  • 如果 q 為空,則 −

    • 返回 true

  • 否則

    • 返回 false

示例 

讓我們看看以下實現,以便對之有一個更好的理解 −

線上演示

#include <bits/stdc++.h>
using namespace std;
class MyStack {
private:
   deque<int> q;
public:
   void push(int x){
      q.push_front(x);
   }
   int pop(){
      int k = q.front();
      q.pop_front();
      return k;
   }
   int top(){
      return q.front();
   }
   bool empty(){
      if (q.empty())
         return true;
      else
         return false;
   }
};
main(){
   MyStack ob;
   ob.push(10);
   ob.push(20);
   cout << (ob.pop()) << endl;
   cout << (ob.pop()) << endl;
}

輸入

push(10),push(20),pop(),pop()

輸出

20
10

更新於: 2020-06-10

3 千次以上瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.