Advertisement
Eternoseeker

DSA Assignment 2

Nov 7th, 2022
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.94 KB | Source Code | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. struct Node{
  5.     int data;
  6.     Node *next;
  7. };
  8.  
  9. class singlylinkedlist{
  10.  
  11. public:
  12.     Node *head;
  13.     Node *t = head;
  14.     singlylinkedlist(){
  15.         head=NULL;
  16.     }
  17.     void insertAtEnd(int v);
  18.     void insertAtBeg(int v);
  19.     void insertAtPos(int v,int pos);
  20.     void insertAftervalue(int v,int aftervalue);
  21.     void deletevalue(int v);
  22.     int searchrecord(int v);
  23.     void reverselist();
  24.     void display();
  25.     void reverselistusingrecusrion(Node *t){
  26.         if(t -> next == NULL){
  27.             cout << t -> data << "->";
  28.         }
  29.         else{
  30.             reverselistusingrecusrion(t -> next);
  31.             cout << t -> data << "->";
  32.         }
  33.     }
  34. };
  35.  
  36. void singlylinkedlist::insertAtEnd(int v){
  37.     Node *nn=new Node;
  38.     nn->data=v;
  39.     if(head==NULL){
  40.         head=nn;
  41.         nn->next=NULL;
  42.     }
  43.     else {
  44.         Node *t=head;
  45.         while(t->next!=NULL){
  46.             t=t->next;
  47.         }
  48.         nn->next=NULL;
  49.         t->next=nn;
  50.     }
  51. }
  52.  
  53. void singlylinkedlist::insertAtBeg(int v){
  54.     Node *nn=new Node;
  55.     nn->data=v;
  56.     if(head==NULL){
  57.             head=nn;
  58.             nn->next=NULL;
  59.         }
  60.     else{
  61.     nn->next=head;
  62.     head=nn;
  63.     }
  64. }
  65. void singlylinkedlist::insertAtPos(int v,int pos){
  66.     Node *t=head;
  67.     Node *nn=new Node;
  68.     nn->data=v;
  69.     for(int i=1;i<pos-1;i++){
  70.         if(t->next!=NULL && head!=NULL){
  71.         t=t->next;
  72.         }
  73.         else{
  74.             cout<<"NO Sufficient Elements";
  75.             break;
  76.         }
  77.     }
  78.     nn->next=t->next;
  79.     t->next=nn;
  80.  
  81.  
  82. }
  83.  
  84. void singlylinkedlist::insertAftervalue(int v,int aftervalue){
  85.     Node *nn=new Node;
  86.     nn->data=v;
  87.     nn->next=NULL;
  88.     Node *t=head;
  89.     while(t->data!=aftervalue){
  90.         t=t->next;
  91.     }
  92.     nn->next=t->next;
  93.     t->next=nn;
  94. }
  95.  
  96. void singlylinkedlist::deletevalue(int v){
  97.     Node *prev=NULL;
  98.     Node *t=head;
  99.     if(t->data==v){
  100.     head=head->next;
  101.     free(t);
  102.     }
  103.     else{
  104.         while(t->data!=v){
  105.             prev=t;
  106.             t=t->next;
  107.             if(t==NULL){
  108.                 break;
  109.             }
  110.         }
  111.         prev->next=t->next;
  112.         free(t);
  113.         }
  114.     }
  115.  
  116. int singlylinkedlist::searchrecord(int v){
  117.     Node *t=head;
  118.     while(t!=NULL){
  119.         if(t->data==v){
  120.             return true;
  121.         }
  122.         else{
  123.             t=t->next;
  124.         }
  125. }
  126.     return 12;
  127. }
  128.  
  129. void singlylinkedlist::display()
  130. {
  131.     Node *t=head;
  132.     while(t!=NULL){
  133.         cout<<t->data<<"->";
  134.         t=t->next;
  135.     }
  136.     cout<<"NULL\n";
  137.  
  138. }
  139.  
  140. void singlylinkedlist::reverselist(){
  141.     Node *c=head;
  142.     Node *prev=NULL;
  143.     Node *n=NULL;
  144.     while(c!=NULL){
  145.         n=c->next;
  146.         c->next=prev;
  147.         prev=c;
  148.         c=n;
  149.     }
  150.     head=prev;
  151. }
  152.  
  153. int main(){
  154.     int ch=11,v1;
  155.     singlylinkedlist s;
  156.     while(ch!=0){
  157.             cout<<"Enter 1 to insert node at begin\n";
  158.             cout<<"Enter 2 to insert node at end.\n";
  159.             cout<<"Enter 3 to add node at desired position.\n";
  160.             cout<<"Enter 4 to add node after the value\n";
  161.             cout<<"Enter 5 to delete the node\n";
  162.             cout<<"Enter 6 to search the element\n";
  163.             cout<<"Enter 7 to display the linkedlist\n";
  164.             cout<<"Enter 8 to reverse linked list\n";
  165.             cout<<"Enter 9 to reverse linked list using recursion\n";
  166.             cout<<"Enter 0 to Exit\n"<<endl;
  167.             cout<<"Enter your choice:";
  168.             cin>>ch;
  169.         switch(ch){
  170.         case 1:
  171.             cout<<"Enter the value which to be add at beginning:";
  172.             cin>>v1;
  173.             s.insertAtBeg(v1);
  174.             break;
  175.         case 2:
  176.             cout<<"Enter the value to be add at ending:";
  177.             cin>>v1;
  178.             s.insertAtEnd(v1);
  179.             break;
  180.         case 3:
  181.             int position;
  182.             cout<<"Enter the value:";
  183.             cin>>v1;
  184.             cout<<"Enter the position:";
  185.             cin>>position;
  186.             s.insertAtPos(v1, position);
  187.             break;
  188.         case 4:
  189.             int aftervalue;
  190.             cout<<"Enter the value to be added:";
  191.             cin>>v1;
  192.             cout<<"Enter the node after which element to be added:";
  193.             cin>>aftervalue;
  194.             s.insertAftervalue(v1, aftervalue);
  195.             break;
  196.         case 5:
  197.             cout<<"Enter the element to be delete:";
  198.             cin>>v1;
  199.             s.deletevalue(v1);
  200.             break;
  201.         case 6:
  202.             cout<<"Enter the element to search:";
  203.             cin>>v1;
  204.             if(s.searchrecord(v1)){
  205.                 cout<<"Element is found"<<endl;;
  206.             }
  207.             else{
  208.                 cout<<"Element is not found"<<endl;
  209.             }
  210.             break;
  211.         case 7:
  212.             s.display();
  213.             break;
  214.         case 8:
  215.             s.reverselist();
  216.             break;
  217.         case 9:
  218.             s.reverselistusingrecusrion(s.head);
  219.             cout << "NULL" << endl;
  220.             break;
  221.     }
  222. }
  223. }
  224.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement