└── SINGLY LINKED LIST AND ITS OPERATIONS.cpp /SINGLY LINKED LIST AND ITS OPERATIONS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | class Node 4 | { 5 | public: 6 | int key; 7 | Node* next; 8 | }; 9 | Node* newnode(int data) 10 | { 11 | Node* n = new Node(); 12 | n->key = data; 13 | n->next = NULL; 14 | return n; 15 | } 16 | Node* insert_begin(int data,Node* head) 17 | { 18 | Node* nn = newnode(data); 19 | if(head == NULL) 20 | { 21 | head = nn; 22 | } 23 | else 24 | { 25 | nn->next = head; 26 | head = nn; 27 | } 28 | return head; 29 | } 30 | Node* insert_end(int data,Node* head) 31 | { 32 | Node* nn = newnode(data); 33 | if(head == NULL) 34 | { 35 | head = nn; 36 | } 37 | else 38 | { 39 | Node* temp = head; 40 | while(temp->next != NULL) 41 | { 42 | temp = temp->next; 43 | } 44 | temp->next = nn; 45 | } 46 | return head; 47 | } 48 | Node* insert_mid(int data,Node* head,int pos) 49 | { 50 | Node* nn = newnode(data); 51 | if(head == NULL) 52 | { 53 | head = nn; 54 | } 55 | else if(pos==1) 56 | { 57 | Node* temp = head; 58 | nn->next = head; 59 | head = nn; 60 | } 61 | else 62 | { 63 | int count = 1; 64 | Node* temp = head; 65 | while(temp->next != NULL) 66 | { 67 | count++; 68 | if(count == pos) 69 | { 70 | break; 71 | } 72 | temp = temp->next; 73 | } 74 | if(count == pos) 75 | { 76 | nn->next = temp->next; 77 | temp->next = nn; 78 | } 79 | else 80 | { 81 | cout << "Invalid" << " "; 82 | } 83 | } 84 | return head; 85 | } 86 | Node* display(Node* head) 87 | { 88 | Node*temp = head; 89 | while(temp != NULL) 90 | { 91 | cout << temp->key << " "; 92 | temp = temp->next; 93 | } 94 | cout << NULL << " " << endl; 95 | return head; 96 | } 97 | Node* delete_node(Node* head) 98 | { 99 | Node* temp = head; 100 | if(head == NULL) 101 | { 102 | cout << "Invalid" << " "; 103 | } 104 | else if(head->next == NULL) 105 | { 106 | head = NULL; 107 | } 108 | else 109 | { 110 | while(temp->next->next != NULL) 111 | { 112 | temp = temp->next; 113 | } 114 | temp->next = NULL; 115 | } 116 | return head; 117 | } 118 | Node* delete_first(Node* head) 119 | { 120 | if(head == NULL) 121 | { 122 | cout << "Invalid" << " "; 123 | } 124 | else 125 | { 126 | head = head->next; 127 | } 128 | return head; 129 | } 130 | Node* delete_pos(int pos,Node* head) 131 | { 132 | if(head == NULL) 133 | { 134 | cout << "Invalid" << " "; 135 | } 136 | else if(pos == 1) 137 | { 138 | head = delete_first(head); 139 | } 140 | else 141 | { 142 | int count = 1; 143 | Node* temp = head; 144 | while(temp != NULL) 145 | { 146 | Node* temp1 = temp->next; 147 | count++; 148 | if(count == pos) 149 | { 150 | temp->next = temp1->next; 151 | //temp1->next = NULL; 152 | break; 153 | } 154 | temp = temp->next; 155 | } 156 | } 157 | return head; 158 | } 159 | bool search_element(int data,Node* head) 160 | { 161 | if(head == NULL) 162 | { 163 | cout << "Not found" << " "; 164 | } 165 | else 166 | { 167 | Node* temp = head; 168 | while(temp != NULL) 169 | { 170 | if(temp->key == data) 171 | { 172 | return true; 173 | } 174 | temp = temp->next; 175 | } 176 | } 177 | return false; 178 | } 179 | Node* displayreverse(Node* head) 180 | { 181 | if(head==NULL) 182 | { 183 | cout << "No elements" << " "; 184 | } 185 | else if(head->next == NULL) 186 | { 187 | cout << "Only one element"; 188 | } 189 | else 190 | { 191 | Node* temp1 = NULL; 192 | Node* temp2 = head; 193 | Node* temp3 = head->next; 194 | while(temp3!=NULL) 195 | { 196 | temp2->next = temp1; 197 | temp1 = temp2; 198 | temp2 = temp3; 199 | temp3 = temp2->next; 200 | } 201 | temp2->next = temp1; 202 | head = temp2; 203 | } 204 | return head; 205 | } 206 | int main() { 207 | Node* head = NULL; 208 | head = insert_begin(100,head); 209 | head = insert_begin(90,head); 210 | head = insert_end(110,head); 211 | head = insert_end(120,head); 212 | head = insert_end(130,head); 213 | head = insert_begin(80,head); 214 | head = insert_mid(70,head,1); 215 | //head = delete_node(head); 216 | //head = delete_pos(1,head); 217 | //head = delete_first(head); 218 | //bool a = search_element(110,head); 219 | //cout << "Searching result:" << a << endl; 220 | head = display(head); 221 | head = displayreverse(head); 222 | head = display(head); 223 | return 0; 224 | } 225 | --------------------------------------------------------------------------------