SINGLY LINKED LIST (C++ CODE):
Hope you liked the Singly Linked List code. Please Let us know your feedback or any other questions. Cheers!!
Last Updated on: 12th Dec 2015
//performing differnt operations on sll #include<iostream.h> #include<stdio.h> #include<conio.h> class sll { private: struct snode { int data; struct snode *next; }*start; public: sll() { start=NULL; } void create(); void display(); void insert_beg(); void insert_end(); void insert_mid(); void delete_beg(); void delete_end(); void delete_mid(); void search(); void reverse(); void addition(); void concate(sll); void sort(); void merge(sll); }; void sll:: create() { snode *new_node,*current; char ch; do { new_node=new snode; cout<<"\nenter the data:"; cin>>new_node->data; new_node->next=NULL; if(start==NULL) { start=new_node; current=new_node; } else { current->next=new_node; current=current->next; } cout<<"\ndo u want to add more nodes?"; cin>>ch; }while(ch=='y'||ch=='Y'); } void sll::display() { snode *temp; if(start==NULL) { cout<<"\nList is empty"; } else { temp=start; cout<<" list is:"; while(temp!=NULL) { cout<<"\t"<<temp->data; temp=temp->next; } } } void sll::insert_beg() { snode *node; node=new snode; cout<<"\nenter the data:"; cin>>node->data; if(start==NULL) { start=node; node->next=NULL; } else { node->next=start; start=node; } } void sll::insert_end() { snode *temp,*node; node=new snode; cout<<"\nenter the data:"; cin>>node->data; temp=start; while(temp->next!=NULL) { temp=temp->next; } temp->next=node; node->next=NULL; } void sll::insert_mid() { snode *temp,*node; int count=1,pos; node=new snode; cout<<"\nenter the data:"; cin>>node->data; cout<<"\nenter the position:"; cin>>pos; temp=start; while(count<pos-1) { temp=temp->next; count++; } node->next=temp->next; temp->next=node; } void sll::delete_beg() { snode *temp; if(start==NULL) { cout<<"\n Cannot delete...."; } else { temp=start; start=temp->next; cout<<temp->data<<"\thas been deleted\n"; delete temp; } } void sll::delete_end() { snode *temp1,*temp2; if(start==NULL) { cout<<"\n Cannot delete...."; } else { temp1=start; temp2=start; while(temp1->next!=NULL) { temp1=temp1->next; } while(temp2->next!=temp1) { temp2=temp2->next; } temp2->next=NULL; cout<<temp1->data<<"\thas been deleted\n"; delete temp1; } } void sll::delete_mid() { snode *temp1,*temp2; int count=1,pos; if(start==NULL) { cout<<"\nCannot delete...."; } else { cout<<"\nenter the position:"; cin>>pos; temp1=start; temp2=start; while(count<=pos-1) { temp1=temp1->next; count++; } while(temp2->next!=temp1) { temp2=temp2->next; } temp2->next=temp1->next; cout<<temp1->data<<"\thas been deleted\n"; delete temp1; } } void sll::search() { snode *temp; int key,pos,count=1; if(start==NULL) { cout<<"\nList is empty....."; } else { temp=start; cout<<"\nenter the data u want to search:"; cin>>key; while(temp->next!=NULL) { if(key==temp->data) { pos=count; cout<<"Data"<<key<<"found at position:"<<pos; } temp=temp->next; count++; } } } void sll::reverse() { snode *back,*current,*temp; back=NULL; current=start; temp=start->next; while(current!=NULL) { current->next=back; back=current; current=temp; if(temp!=NULL) { temp=temp->next; } } start=back; } void sll::addition() { snode *temp; int sum=0; if(start==NULL) { cout<<"\nWe cannot add as list is empty...."; } else { temp=start; while(temp!=NULL) { sum=sum+temp->data; temp=temp->next; } cout<<"\nAddition="<<sum; } } void sll::concate(sll b) { snode *temp; if(start==NULL) { create(); display(); } b.create(); b.display(); temp=start; while(temp->next!=NULL) { temp=temp->next; } temp->next=b.start; } void sll::sort() { snode *temp1,*temp2; int temp; temp1=start; while(temp1!=NULL) { temp2=start; while(temp2->next!=NULL) { if(temp2->data>temp2->next->data) { temp=temp2->data; temp2->data=temp2->next->data; temp2->next->data=temp; } temp2=temp2->next; } temp1=temp1->next; } } void sll::merge(sll b) { snode *temp1,*temp2,*temp3,*current; if(start==NULL) { create(); display(); } b.create(); b.display(); temp1=start; temp2=b.start; temp3=NULL; current=temp3; while(temp1!=NULL&&temp2!=NULL) { if(temp1->data>temp2->data) { temp3=temp2; temp2=temp2->next; } else if(temp1->data<temp2->data) { temp3=temp1; temp1=temp1->next; } else { temp3=temp1; temp1=temp1->next; temp2=temp2->next; } if(start==NULL) { current=temp3; start=temp3; } else { current->next=temp3; current=current->next; } if(temp1!=NULL) { current->next=temp1; } if(temp2!=NULL) { current->next=temp2; } } } void main() { sll a,b,c; int ch; char choice; clrscr(); do { cout<<"\nMENU...."; cout<<"\n1.create"; cout<<"\n2.display"; cout<<"\n3.insert"; cout<<"\na.at beg"; cout<<"\n4.insert at end"; cout<<"\n5.insert at middle"; cout<<"\n6.delete at start"; cout<<"\n7.delete at end"; cout<<"\n8.delete at middle"; cout<<"\n9.searching"; cout<<"\n10.reverse"; cout<<"\n11.Addition"; cout<<"\n12.concatenation"; cout<<"\n13.sort"; cout<<"\n14.merge"; cout<<"\nenter the choice:"; cin>>ch; switch(ch) { case 1: a.create(); a.display(); break; case 2: a.display(); break; case 3: a.insert_beg(); a.display(); break; case 4: a.insert_end(); a.display(); break; case 5: a.insert_mid(); a.display(); break; case 6: a.delete_beg(); a.display(); break; case 7: a.delete_end(); a.display(); break; case 8: a.delete_mid(); a.display(); break; case 9: a.search(); break; case 10: a.reverse(); a.display(); break; case 11: a.addition(); break; case 12: a.concate(b); a.display(); break; case 13: a.sort(); a.display(); break; case 14: a.merge(b); a.display(); break; } cout<<"\ndo u want to continue:"; cin>>choice; }while(choice=='y'||choice=='Y'); getch(); }
Hope you liked the Singly Linked List code. Please Let us know your feedback or any other questions. Cheers!!
No comments:
Post a Comment
Thanks for your valuable comment