-
Notifications
You must be signed in to change notification settings - Fork 1
/
24_4_stack_using_queue.cpp
86 lines (69 loc) · 1.08 KB
/
24_4_stack_using_queue.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include<bits/stdc++.h>
using namespace std;
/*
Two Methods
1.Making push method costly
2.Making pop method costly
This program uses 1st one
Adding 4 into the stack
.123 =>start line
....
.123 after push into the q2
...4
..12 after push and pop
..34
...1 after push and pop
.234
.... after push and pop
1234
1234 after swap
....
*/
class Stack{
int N;
queue<int> q1;
queue<int> q2;
public:
Stack(){
N=0;
}
void push(int val){
q2.push(val);
N++;
while(!q1.empty()){
q2.push(q1.front());
q1.pop();
}
queue<int> temp=q1;
q1=q2;
q2=temp;
}
void pop(){
q1.pop();
N--;
}
int top(){
return q1.front();
}
int size(){
return N;
}
};
int main()
{
Stack st;
st.push(1);
st.push(2);
st.push(3);
st.push(4);
cout<<st.top()<<endl;
st.pop();
cout<<st.top()<<endl;
st.pop();
cout<<st.top()<<endl;
st.pop();
cout<<st.top()<<endl;
st.pop();
cout<<st.size()<<endl;
return 0;
}