Linked List
C++ Example:
1
2#include <iostream>
3using namespace std;
4
5struct Node{
6public:
7 int data;
8 Node* next;
9 Node(int value) : data(value), next(nullptr) {}
10
11};
12
13class LinkedList{
14 private:
15 Node* head;
16 public:
17 LinkedList() : head(nullptr){};
18
19 void insertDataAtEnd(int data){
20 Node* newNode = new Node(data);
21 if (head == nullptr){
22 head = newNode;
23 } else {
24 Node* temp = head;
25 while(temp->next != nullptr){
26 temp = temp->next;
27 }
28 temp->next = newNode;
29 }
30 }
31
32 void insertDataAtStart(int data){
33 Node *newNode = new Node(data);
34 newNode->next = head;
35 head = newNode;
36 }
37
38 void printList(){
39 Node* temp = head;
40 while (temp != nullptr){
41 cout<<temp->data<<" ";
42 temp = temp->next;
43 }
44 cout<<endl;
45 }
46
47 void deleteValue(int value){
48 Node *temp = head;
49 while(temp->next->data != value){
50 temp = temp->next;
51 }
52 Node * nodeToDelete = temp->next;
53 temp->next = temp->next->next;
54 delete nodeToDelete;
55 }
56
57 Node *reverseList(){
58 Node *prevPtr = nullptr;
59 Node *currentPtr = head;
60 Node *nextPtr;
61
62 while(currentPtr != nullptr){
63 nextPtr = currentPtr->next;
64 currentPtr->next = prevPtr;
65 prevPtr = currentPtr;
66 currentPtr = nextPtr;
67 }
68 head = prevPtr;
69 return prevPtr;
70 }
71
72 ~LinkedList() {
73 Node* temp;
74 while (head) {
75 temp = head;
76 head = head->next;
77 delete temp;
78 }
79 }
80
81};
82
83int main(){
84
85 LinkedList list;
86
87 list.insertDataAtEnd(1);
88 list.insertDataAtEnd(2);
89 list.insertDataAtEnd(3);
90 list.insertDataAtEnd(4);
91 list.insertDataAtStart(5);
92 list.printList();
93
94 list.deleteValue(3);
95 list.printList();
96
97 list.reverseList();
98 list.printList();
99}
100