@@ -6,66 +6,69 @@ struct Queue {
6
6
// Add an item to the queue
7
7
void enQueue (int x)
8
8
{
9
- // Push item into the first stack (s1)
9
+ // Move all elements from first stack (s1) to second stack (s2)
10
+ while (!s1.empty ()) {
11
+ s2.push (s1.top ());
12
+ s1.pop ();
13
+ }
14
+ // Push item into first stack (s1)
10
15
s1.push (x);
16
+ // Push everything back to first stack (s1)
17
+ while (!s2.empty ()) {
18
+ s1.push (s2.top ());
19
+ s2.pop ();
20
+ }
11
21
}
22
+
12
23
// Remove an item from the queue
13
24
int deQueue ()
14
25
{
15
- // If both stacks are empty, then exit
16
- if (s1.empty () && s2. empty ()) {
17
- cout << " Q is empty " ;
18
- exit ( 0 ) ;
26
+ // If first stack (s1) is empty, then exit
27
+ if (s1.empty ()) {
28
+ cout << " Queue is Empty, thus deletion cannot be performed \n " ;
29
+ return - 1 ;
19
30
}
20
31
21
- // If second stack (s2) is empty, move elements from first stack (s1) to second stack (s2)
22
- if (s2.empty ()) {
23
- while (!s1.empty ()){
24
- s2.push (s1.top ());
25
- s1.pop ();
26
- }
27
- }
28
- // Return the top item from secodn stack (s2)
29
- int x = s2.top ();
30
- s2.pop ();
32
+ // Else return top of first stack (s1)
33
+ int x = s1.top ();
34
+ s1.pop ();
31
35
return x;
32
36
}
33
37
void sizeQueue ()
34
38
{
35
- cout<<" Size of the Queue: " <<s1.size ()+s2. size () <<endl;
39
+ cout<<" Size of the Queue: " <<s1.size ()<<endl;
36
40
}
37
41
};
38
42
39
43
int main ()
40
44
{
41
45
Queue q;
42
46
int x, data;
43
- char ch;
44
47
do
45
48
{
46
- cout<<" \t Main Menu \n " ;
47
- cout<<" \t 1. Insertion to Queue \n " ;
48
- cout<<" \t 2. Deletion from Queue \n " ;
49
- cout<<" \t 3. Size of Queue\n " ;
50
- cout<<" \t 4. Quit \n " ;
51
- cout<<" Enter your choice: " ;
52
- cin>>x;
53
- switch (x)
54
- {
55
- case 1 : cout<<" Enter the value to be inserted in Queue: " ;
56
- cin>>data;
57
- q.enQueue (data);
58
- break ;
59
- case 2 : cout<< " The deleted element is: " << q.deQueue ()<<endl ;
60
- break ;
61
- case 3 : q. sizeQueue () ;
62
- break ;
63
- case 4 : exit ( 0 );
64
- default : cout<< " Wrong Choice Entered \n " ;
65
- }
66
- cout<< " Do you want to go to the main menu (y/n): " ;
67
- cin>>ch;
49
+ cout<<" \n Main Menu: \n " ;
50
+ cout<<" 1. Insertion to Queue \n " ;
51
+ cout<<" 2. Deletion from Queue \n " ;
52
+ cout<<" 3. Size of Queue\n " ;
53
+ cout<<" 4. Quit\n " ;
54
+ cout<<" Enter your choice (1-4) : " ;
55
+ cin>>x;
56
+ switch (x)
57
+ {
58
+ case 1 : cout<<" Enter the value to be inserted in Queue: " ;
59
+ cin>>data;
60
+ q.enQueue (data);
61
+ break ;
62
+ case 2 : data = q.deQueue ();
63
+ if (data!=- 1 )
64
+ cout<< " The deleted element is: " <<data<<endl ;
65
+ break ;
66
+ case 3 : q. sizeQueue ( );
67
+ break ;
68
+ case 4 : exit ( 0 );
69
+ default : cout<< " Invalid Choice Entered \n " ;
70
+ }
68
71
}
69
- while (ch== ' Y ' ||ch== ' y ' );
72
+ while (true );
70
73
return 0 ;
71
74
}
0 commit comments