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