File tree Expand file tree Collapse file tree 1 file changed +36
-20
lines changed
Expand file tree Collapse file tree 1 file changed +36
-20
lines changed Original file line number Diff line number Diff line change @@ -5,49 +5,65 @@ struct node {
55 struct node * next;
66};
77class Queue {
8- node* front= nullptr ;
9- node* rear= nullptr ;
8+ node* front = nullptr ;
9+ node* rear = nullptr ;
1010
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:
1323 void createNode (int val) {
1424 auto * nn = new node;
1525 nn->data = val;
1626 nn->next = nullptr ;
1727 front = nn;
1828 rear = nn;
1929 }
30+
31+ public:
2032 void enqueue (int val) {
2133 if (front == nullptr || rear == nullptr ) {
2234 createNode (val);
23- }
24- else {
25- node* nn;
26- nn = new node;
35+ } else {
36+ node* nn = new node;
2737 nn->data = val;
2838 rear->next = nn;
2939 nn->next = front;
3040 rear = nn;
3141 }
3242 }
3343 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 {
3752 front = front->next ;
38- delete n ;
53+ rear-> next = front ;
3954 }
55+ delete n;
4056 }
4157 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 ;
5060 }
61+ const node* ptr = front;
62+ do {
63+ std::cout << ptr->data << ' ' ;
64+ ptr = ptr->next ;
65+ } while (ptr != front);
66+ std::cout << ' \n ' ;
5167 }
5268};
5369int main (void ) {
You can’t perform that action at this time.
0 commit comments