สมมติว่าเราต้องการใช้หนึ่งสแต็กโดยใช้คิว เราต้องกำหนดวิธีการเหล่านี้สำหรับสแต็ก
-
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