
#include <iostream> #include <cstdlib> using namespace std; struct Node { int data; Node *next; }; struct Node *head = NULL, *p, *temp; void insertfront(int new_data) { struct Node *new_node = new Node; //create empty node new_node->data = new_data; new_node->next = NULL; if (head == NULL){ head = new_node; } else{ new_node->next = head; head = new_node; } } void deleteFront(){ if (head == NULL) //empty list return; else{ p = head; head = head->next; p->next = NULL; //unlink before deleting delete p; } } void deleteLast(){ if (head == NULL) //empty list return; else if (head->next == NULL){ //if it contains one element only delete head; head = NULL; } else{ //more than one elements p = head; while (p->next->next != NULL){ p = p->next; } delete p->next; p->next = NULL; } } void insertlast(int item){ struct Node *new_node = new Node; new_node->data = item; new_node->next = NULL; if (head == NULL){ //if empty head = new_node; } else { p = head; while (p->next != NULL){ p = p->next; } p->next = new_node; } } void insertAfter(int key, int item){ if (head == NULL) return; else{ bool found = false; p = head; while (p != NULL){ if (p->data == key){ found = true; break; } p = p->next; } if (found){ struct Node *new_node = new Node; new_node->data = item; new_node->next = p->next; p->next = new_node; } else { cout << "key not found\n"; } } } void display() { cout<<"The linked list is: "; p = head; if (head == NULL) cout << "empty\n"; else { while (p != NULL) { cout<< p->data <<" "; p = p->next; } cout<<"\n"; } } void update(int key, int item){ p = head; bool found = false; while(p != NULL){ if (p->data == key){ found = true; break; } p = p->next; } if (found){ p->data = item; } else { cout<<"key not found :(\n"; } } void search(int key){ p = head; int index = 0; bool found = false; while(p != NULL){ //to look for a key on the last node... if (p->data == key){ found = true; break; } p = p->next; index++; } if (found){ cout << "key " << key << " found at index " << index << "\n" ; } else { cout<<"key not found :(\n"; } } int main() { cout<<"#########################################################\n"; cout<<"### ###\n"; cout<<"### C++ program to implement singly linked list ###\n"; cout<<"### ###\n"; cout<<"#########################################################\n"; while(true){ cout<<" -- Enter your choice to continue -- \n"; cout<<"1. Insert Front\n2. Insert Last\n3. insert After\n4. delete Front\n"<< "5. delete Last\n6. update\n7. search\n8. display\n9. exit\n"; int command, value, position; cin >> command; switch (command){ case 1: cout<<"enter the value to be inserted : "; cin >> value; insertfront(value); break; case 2: cout<<"enter the value to be inserted : "; cin >> value; insertlast(value); break; case 3: cout<<"enter the value to be inserted : "; cin >> value; cout<<"Enter the position at which node to be inserted after : "; cin >> position; insertAfter(position,value); break; case 4: deleteFront(); break; case 5: deleteLast(); break; case 6: cout<<"enter the value to be updated : "; cin >> position; cout<<"Enter the new value : "; cin >> value; update(position,value); break; case 7: cout<<"enter the value you are looking for : "; cin >> value; search(value); break; case 8: display(); break; case 9: exit(1); break; default: cout << "wrong choice\n"; break; } } }
1 Comments
Naaf hin
ReplyDelete