1
1
#include < iostream>
2
2
using namespace std ;
3
3
4
-
5
4
namespace my {
6
5
/* *
7
- *implementation using parameterised linked list
6
+ * parameterised type implementation using linked list
8
7
* [value][next] -> [value][next] -> ... -> [value][next] -> [value][next]
9
- * (front Node) (intermediat elements ) (rear Node) (dummy Node)
8
+ * (front Node) (intermediat Nodes ) (rear Node) (dummy Node)
10
9
*/
11
10
template <typename T>
12
11
struct Node {
13
12
/* *
14
- * next: will store next Node(right) address
13
+ * next: will store right Node address
15
14
*/
16
15
T value;
17
16
Node<T>* next;
@@ -22,8 +21,9 @@ namespace my {
22
21
class queue {
23
22
private:
24
23
/* *
25
- * variabel: _front points to left most node , right most Node is dummy Node
26
- * count: will keep track of current number of elements present in stack excluding dummy Node
24
+ * _front : points to left most node
25
+ * count: keeps track of current number of elements present in queue excluding dummy Node
26
+ * rear: points to most recent Node added into the queue, which is just left size of dummy Node
27
27
*/
28
28
Node<T>* _front;
29
29
Node<T>* rear;
@@ -36,9 +36,9 @@ namespace my {
36
36
void push (const T& element) {
37
37
Node<T>* new_node = new Node<T>(element); // create New Node
38
38
if (count > 0 ) {
39
- new_node->next = rear->next ; // make buffer point to dummy Node
40
- rear->next = new_node; // make rear Node point to buffer
41
- rear = new_node; // make rear pointer to point to buffer
39
+ new_node->next = rear->next ; // make new Node point to dummy Node
40
+ rear->next = new_node; // make rear Node point to new Node
41
+ rear = new_node; // make rear Node's pointer to point to new Node
42
42
} else {
43
43
new_node->next = rear;
44
44
rear = _front = new_node;
@@ -80,9 +80,7 @@ int main() {
80
80
Q.push (1 );
81
81
Q.push (2 );
82
82
Q.push (3 );
83
-
84
83
cout << " count: " << Q.size () << endl;
85
-
86
84
Q.front () = 10 ;
87
85
88
86
while (Q.empty () != true ) {
0 commit comments