File tree 2 files changed +95
-2
lines changed
2 files changed +95
-2
lines changed Original file line number Diff line number Diff line change @@ -1814,8 +1814,8 @@ In order to achieve greater coverage and encourage more people to contribute to
1814
1814
</a>
1815
1815
</td>
1816
1816
<td> <!-- C++ -->
1817
- <a href="./CONTRIBUTING.md ">
1818
- <img align="center" height="25" src="./logos/github .svg" />
1817
+ <a href="./src/cpp/DynamicQueue.cpp ">
1818
+ <img align="center" height="25" src="./logos/cplusplus .svg" />
1819
1819
</a>
1820
1820
</td>
1821
1821
<td> <!-- Java -->
Original file line number Diff line number Diff line change
1
+ #include < cstddef>
2
+ #include < iostream>
3
+
4
+ struct Node {
5
+ int key;
6
+ Node *next;
7
+
8
+ Node (int key) : key(key), next(nullptr ) {}
9
+ };
10
+
11
+ class DynamicQueue {
12
+ private:
13
+ Node *_begin;
14
+ Node *_end;
15
+
16
+ public:
17
+ DynamicQueue () : _begin(nullptr ), _end(nullptr ) {}
18
+
19
+ ~DynamicQueue () {
20
+ while (_begin) {
21
+ Node *tmp = _begin;
22
+ _begin = _begin->next ;
23
+ delete tmp;
24
+ }
25
+ }
26
+
27
+ bool isEmpty (void ) const { return _begin == nullptr ; }
28
+
29
+ void enqueue (int key) {
30
+ Node *node = new Node (key);
31
+
32
+ if (isEmpty ()) {
33
+ _begin = node;
34
+ } else {
35
+ _end->next = node;
36
+ }
37
+ _end = node;
38
+ }
39
+
40
+ Node *dequeue (void ) {
41
+ if (isEmpty ()) {
42
+ return nullptr ;
43
+ }
44
+
45
+ Node *removed = _begin;
46
+ _begin = _begin->next ;
47
+ if (isEmpty ()) {
48
+ _end = nullptr ;
49
+ }
50
+ return removed;
51
+ }
52
+
53
+ size_t size (void ) const {
54
+ size_t size = 0 ;
55
+
56
+ Node *curr = _begin;
57
+ while (curr) {
58
+ ++size;
59
+ curr = curr->next ;
60
+ }
61
+
62
+ return size;
63
+ }
64
+
65
+ void print (void ) const {
66
+ if (isEmpty ()) {
67
+ std::cout << " empty queue" ;
68
+ } else {
69
+ Node *curr = _begin;
70
+ while (curr) {
71
+ std::cout << curr->key << ' ' ;
72
+ curr = curr->next ;
73
+ }
74
+ }
75
+ std::cout << std::endl;
76
+ }
77
+ };
78
+
79
+ int main (void ) {
80
+ DynamicQueue queue;
81
+
82
+ queue.enqueue (42 );
83
+ queue.enqueue (5 );
84
+ queue.enqueue (1231 );
85
+ queue.enqueue (515 );
86
+ queue.print (); // 42 5 1231 515
87
+
88
+ // Use 'delete' keyword to make the code leak-free
89
+ queue.dequeue ();
90
+ queue.dequeue ();
91
+ queue.print (); // 1231 515
92
+ return 0 ;
93
+ }
You can’t perform that action at this time.
0 commit comments