สมมติว่าเราต้องการใช้หนึ่งสแต็กโดยใช้คิว เราต้องกำหนดวิธีการเหล่านี้สำหรับสแต็ก
-
push(x) - กด x ลงบนกอง
-
pop() - ลบและส่งคืนองค์ประกอบด้านบนจากสแต็ก
-
top() - ส่งคืนองค์ประกอบด้านบนจากสแต็ก
-
empty() - ส่งคืนว่าสแต็กว่างเปล่าหรือไม่
ดังนั้น หากเราเรียกใช้ฟังก์ชัน push(10), push(20) แล้วเรียก pop(), pop() ผลลัพธ์จะเป็น 20, 10
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนดหนึ่ง deque q
-
กำหนดฟังก์ชัน push() ซึ่งจะใช้เวลา x
-
แทรก x ที่จุดเริ่มต้นของ q
-
กำหนดฟังก์ชัน pop()
-
k :=องค์ประกอบแรกของ q
-
ลบองค์ประกอบด้านหน้าออกจาก q
-
ผลตอบแทน k
-
กำหนดฟังก์ชัน top()
-
คืนค่าองค์ประกอบแรกของ q
-
กำหนดฟังก์ชันว่าง()
-
ถ้า q ว่างเปล่า −
-
คืนความจริง
-
-
มิฉะนั้น
-
คืนค่าเท็จ
-
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#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