-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathqueue_using_SLL.cpp
More file actions
153 lines (130 loc) · 3.19 KB
/
queue_using_SLL.cpp
File metadata and controls
153 lines (130 loc) · 3.19 KB
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
//Program to implement a Queue using two Singly Linked List
#include<iostream>
#include<cstdlib>
#include"SLL.cpp"
using namespace std;
class queue
/*
objective: Create a class to implement Queue using STL Stack
input parameters: none
output value: none
description: Class definition
approach: Class definition provides data member and member functions for the Queue class
*/
{
SLinkedList<int> sll;
int curr_size; // current size of the Q
public:
queue();
void dequeue();
void enqueue(int);
int front(); // returns front element
bool isEmpty();
void queue_status();
};
queue::queue(){
/*
Objective: To construct an object of class queue and initialize size of queue with 0.
Input: None
Output: None
Return value: None
*/
curr_size = 0;
}
bool queue::isEmpty(){
/*
Objective: To test whether the queue is empty.
Input: None
Output: None
Return value: true, if queue is empty
false, if queue is not empty.
*/
if( sll.empty() )
return true;
else
return false;
}
void queue::enqueue(int ele){
/*
Objective: To insert an element at the rear of queue.
Input: ele -> The element to be inserted.
Output: None
Return value: None
*/
sll.addBack(ele);
curr_size++;
}
void queue::dequeue(){
/*
Objective: To remove the element from the front of queue.
Input: None
Output: None
Return value: None
*/
if( !isEmpty() ){
curr_size--;
sll.removeFront();
}
}
int queue::front(){
/*
Objective: To find the front element of the queue.
Input: None
Output: None
Return value: element at the front, if queue is not empty
NULL, if queue is empty
*/
if( !isEmpty() )
return sll.front();
}
void queue::queue_status(){
/*
Objective: To display the queue
Input: None
Output: Queue data
Return value: None
*/
cout<<"\n\n------------------------------Queue----------------------------------\n";
sll.print();
cout<<"\n--------------------------------------------------------------------";
}
int main(){
/*
Objective: To perform various queue operations.
*/
queue q;
int choice;
while(1){
cout<<"\n\n\t\t\tQUEUE OPERATIONS\n\n1.ENQUEUE\n2.DEQUEUE\n3.FRONT\n4.PRINT QUEUE\n5.EXIT\n\n";
cout<<"\nEnter your choice : ";
cin>>choice;
switch(choice){
case 1:
cout<<"\nEnter element: ";
int ele;
cin>>ele;
q.enqueue(ele);
q.queue_status();
break;
case 2: if(!q.isEmpty()){
q.dequeue();
cout<<"\nElement removed!";
}
else
cout<<"\nQueue empty!!Cannot perform deque!!";
q.queue_status();
break;
case 3: if(!q.isEmpty())
cout<<"\nFront element: "<<q.front();
else
cout<<"\nQueue is empty!!";
break;
case 4: q.queue_status();
break;
case 5: exit(0);
default: cout<<"Invalid choice!!";
break;
}
}
return 0;
}