Amit Raghuwanshi
Can we implement Stack using Queues? If yes then how?
By Amit Raghuwanshi in Algorithms in C# on Aug 09 2018
  • Laxmidhar Sahoo
    Oct, 2018 3

    here used c class Stack { // Two inbuilt queues queue q1, q2; // To maintain current number of // elements int curr_size; public: Stack() { curr_size = 0; } void push(int x) { curr_size ; // Push x first in empty q2 q2.push(x); // Push all the remaining // elements in q1 to q2. while (!q1.empty()) { q2.push(q1.front()); q1.pop(); } // swap the names of two queues queue q = q1; q1 = q2; q2 = q; } void pop(){ // if no elements are there in q1 if (q1.empty()) return ; q1.pop(); curr_size--; } int top() { if (q1.empty()) return -1; return q1.front(); } int size() { return curr_size; } }; // driver code int main() { Stack s; s.push(1); s.push(2); s.push(3); cout << "current size: " << s.size() << endl; cout << s.top() << endl; s.pop(); cout << s.top() << endl; s.pop(); cout << s.top() << endl; cout << "current size: " << s.size() << endl; return 0; } class Stack { queue q1, q2; int curr_size; public: Stack() { curr_size = 0; } void pop() { if (q1.empty()) return; // Leave one element in q1 and // push others in q2. while (q1.size() != 1) { q2.push(q1.front()); q1.pop(); } // Pop the only left element // from q1 q1.pop(); curr_size--; // swap the names of two queues queue q = q1; q1 = q2; q2 = q; } void push(int x) { q1.push(x); curr_size ; } int top() { if (q1.empty()) return -1; while( q1.size() != 1 ) { q2.push(q1.front()); q1.pop(); } // last pushed element int temp = q1.front(); // to empty the auxiliary queue after // last operation q1.pop(); // push last element to q2 q2.push(temp); // swap the two queues names queue q = q1; q1 = q2; q2 = q; return temp; } int size() { return curr_size; } }; // driver code int main() { Stack s; s.push(1); s.push(2); s.push(3); s.push(4); cout << "current size: " << s.size() << endl; cout << s.top() << endl; s.pop(); cout << s.top() << endl; s.pop(); cout << s.top() << endl; cout << "current size: " << s.size() << endl; return 0; }

    • 0


Most Popular Job Functions


MOST LIKED QUESTIONS