From c0fba99df6031f03acda188e4d4dfbaf3089a707 Mon Sep 17 00:00:00 2001 From: Anup Kumar Panwar Date: Tue, 2 Aug 2016 15:42:47 +0530 Subject: [PATCH] Linked Lists --- CircularLinkedList - .cpp | 109 ++++++++++++++++++++++++++++ DoublyLinkedList.cpp | 125 ++++++++++++++++++++++++++++++++ LinkedList.cpp | 107 +++++++++++++++++++++++++++ StackArray.cpp => ListArray.cpp | 0 4 files changed, 341 insertions(+) create mode 100644 CircularLinkedList - .cpp create mode 100644 DoublyLinkedList.cpp create mode 100644 LinkedList.cpp rename StackArray.cpp => ListArray.cpp (100%) diff --git a/CircularLinkedList - .cpp b/CircularLinkedList - .cpp new file mode 100644 index 000000000..c8b3841a2 --- /dev/null +++ b/CircularLinkedList - .cpp @@ -0,0 +1,109 @@ +#include +using namespace std; + +struct node +{ + int val; + node *next; +}; + +node *start; + +void insert(int x) +{ + node *t=start; + + if (start!=NULL) + { + while(t->next!=start) + { + t=t->next; + } + node *n= new node; + t->next=n; + n->val=x; + n->next=start; + } + else + { + node *n= new node; + n->val=x; + start=n; + n->next=start; + } +} + +void remove(int x) +{ + node *t=start; + node *p; + while(t->val!=x) + { + p=t; + t=t->next; + } + p->next=t->next; + delete t; +} + +void search(int x) +{ + node *t= start; + int found =0; + while(t->next!=start) + { + if(t->val==x) + { + cout<<"\nFound"; + found=1; + break; + } + t=t->next; + } + if(found==0) + { + cout<<"\nNot Found"; + } +} + +void show() +{ + node *t=start; + do + { + cout<val<<"\t"; + t=t->next; + } + while(t!=start); + +} + +int main() +{ + int choice, x; + do + { + cout<<"\n1. Insert"; + cout<<"\n2. Delete"; + cout<<"\n3. Search"; + cout<<"\n4. Print"; + cout<<"\n\nEnter you choice : "; + cin>>choice; + switch (choice) + { + case 1 : cout<<"\nEnter the element to be inserted : "; + cin>>x;; + insert(x); break; + case 2 : cout<<"\nEnter the element to be removed : "; + cin>>x; + remove(x); break; + case 3 : cout<<"\nEnter the element to be searched : "; + cin>>x; + search(x); break; + case 4 : show(); break; + } + } + while(choice!=0); + + return 0; +} diff --git a/DoublyLinkedList.cpp b/DoublyLinkedList.cpp new file mode 100644 index 000000000..bbc6dfc93 --- /dev/null +++ b/DoublyLinkedList.cpp @@ -0,0 +1,125 @@ +#include +using namespace std; + +struct node +{ + int val; + node *prev; + node *next; +}; + +node *start; + +void insert(int x) +{ + node *t=start; + if (start!=NULL) + { + while(t->next!=NULL) + { + t=t->next; + } + node *n= new node; + t->next=n; + n->prev=t; + n->val=x; + n->next=NULL; + } + else + { + node *n= new node; + n->val=x; + n->prev=NULL; + n->next=NULL; + start=n; + } +} + +void remove(int x) +{ + node *t=start; + while(t->val!=x) + { + t=t->next; + } + t->prev->next=t->next; + t->next->prev=t->prev; + delete t; +} + +void search(int x) +{ + node *t= start; + int found =0; + while(t!=NULL) + { + if(t->val==x) + { + cout<<"\nFound"; + found=1; + break; + } + t=t->next; + } + if(found==0) + { + cout<<"\nNot Found"; + } +} + +void show() +{ + node *t=start; + while(t!=NULL) + { + cout<val<<"\t"; + t=t->next; + } + +} + +void reverseShow() +{ + node *t=start; + while(t->next!=NULL) + { + t=t->next; + } + while(t!=NULL) + { + cout<val<<"\t"; + t=t->prev; + } +} + +int main() +{ + int choice, x; + do + { + cout<<"\n1. Insert"; + cout<<"\n2. Delete"; + cout<<"\n3. Search"; + cout<<"\n4. Forward print"; + cout<<"\n5. Reverse print"; + cout<<"\n\nEnter you choice : "; + cin>>choice; + switch (choice) + { + case 1 : cout<<"\nEnter the element to be inserted : "; + cin>>x;; + insert(x); break; + case 2 : cout<<"\nEnter the element to be removed : "; + cin>>x; + remove(x); break; + case 3 : cout<<"\nEnter the element to be searched : "; + cin>>x; + search(x); break; + case 4 : show(); break; + case 5 : reverseShow(); break; + } + } + while(choice!=0); + + return 0; +} diff --git a/LinkedList.cpp b/LinkedList.cpp new file mode 100644 index 000000000..9319249fd --- /dev/null +++ b/LinkedList.cpp @@ -0,0 +1,107 @@ +#include +using namespace std; + +struct node +{ + int val; + node *next; +}; + +node *start; + +void insert(int x) +{ + node *t=start; + if (start!=NULL) + { + while(t->next!=NULL) + { + t=t->next; + } + node *n= new node; + t->next=n; + n->val=x; + n->next=NULL; + } + else + { + node *n= new node; + n->val=x; + n->next=NULL; + start=n; + } +} + +void remove(int x) +{ + node *t=start; + node *p; + while(t->val!=x) + { + p=t; + t=t->next; + } + p->next=t->next; + delete t; +} + +void search(int x) +{ + node *t= start; + int found =0; + while(t!=NULL) + { + if(t->val==x) + { + cout<<"\nFound"; + found=1; + break; + } + t=t->next; + } + if(found==0) + { + cout<<"\nNot Found"; + } +} + +void show() +{ + node *t=start; + while(t!=NULL) + { + cout<val<<"\t"; + t=t->next; + } + +} + +int main() +{ + int choice, x; + do + { + cout<<"\n1. Insert"; + cout<<"\n2. Delete"; + cout<<"\n3. Search"; + cout<<"\n4. Print"; + cout<<"\n\nEnter you choice : "; + cin>>choice; + switch (choice) + { + case 1 : cout<<"\nEnter the element to be inserted : "; + cin>>x;; + insert(x); break; + case 2 : cout<<"\nEnter the element to be removed : "; + cin>>x; + remove(x); break; + case 3 : cout<<"\nEnter the element to be searched : "; + cin>>x; + search(x); break; + case 4 : show(); break; + } + } + while(choice!=0); + + return 0; +} diff --git a/StackArray.cpp b/ListArray.cpp similarity index 100% rename from StackArray.cpp rename to ListArray.cpp