Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ใช้ Stack โดยใช้ Queues ใน C ++


สมมติว่าเราต้องการใช้หนึ่งสแต็กโดยใช้คิว เราต้องกำหนดวิธีการเหล่านี้สำหรับสแต็ก

  • 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