File tree 1 file changed +36
-20
lines changed
1 file changed +36
-20
lines changed Original file line number Diff line number Diff line change @@ -5,49 +5,65 @@ struct node {
5
5
struct node * next;
6
6
};
7
7
class Queue {
8
- node* front= nullptr ;
9
- node* rear= nullptr ;
8
+ node* front = nullptr ;
9
+ node* rear = nullptr ;
10
10
11
- public:
12
- Queue () = default ;
11
+ Queue (const Queue&) = delete ;
12
+ Queue& operator =(const Queue&) = delete ;
13
+
14
+ public:
15
+ Queue () = default ;
16
+ ~Queue () {
17
+ while (front) {
18
+ dequeue ();
19
+ }
20
+ }
21
+
22
+ private:
13
23
void createNode (int val) {
14
24
auto * nn = new node;
15
25
nn->data = val;
16
26
nn->next = nullptr ;
17
27
front = nn;
18
28
rear = nn;
19
29
}
30
+
31
+ public:
20
32
void enqueue (int val) {
21
33
if (front == nullptr || rear == nullptr ) {
22
34
createNode (val);
23
- }
24
- else {
25
- node* nn;
26
- nn = new node;
35
+ } else {
36
+ node* nn = new node;
27
37
nn->data = val;
28
38
rear->next = nn;
29
39
nn->next = front;
30
40
rear = nn;
31
41
}
32
42
}
33
43
void dequeue () {
34
- node* n;
35
- n = front;
36
- if (n) {
44
+ if (front == nullptr ) {
45
+ return ;
46
+ }
47
+ const node* const n = front;
48
+ if (front == rear) {
49
+ front = nullptr ;
50
+ rear = nullptr ;
51
+ } else {
37
52
front = front->next ;
38
- delete n ;
53
+ rear-> next = front ;
39
54
}
55
+ delete n;
40
56
}
41
57
void traverse () {
42
- node* ptr;
43
- ptr = front;
44
- if (ptr) {
45
- do {
46
- std::cout << ptr->data << " " ;
47
- ptr = ptr->next ;
48
- } while (ptr != rear->next );
49
- std::cout << front->data << std::endl;
58
+ if (front == nullptr ) {
59
+ return ;
50
60
}
61
+ const node* ptr = front;
62
+ do {
63
+ std::cout << ptr->data << ' ' ;
64
+ ptr = ptr->next ;
65
+ } while (ptr != front);
66
+ std::cout << ' \n ' ;
51
67
}
52
68
};
53
69
int main (void ) {
You can’t perform that action at this time.
0 commit comments