Google+ Program For Deletion From Linked List in C++[How to] - CodieeHome
“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”
__

Deletion From A Linked List

Goal: Program to delete a node from a Given Linked List.

Method-Used: Simply assigning the next pointer of previous node to next node of Given node.

Description:-

  There are two ways in which we can delete a node from Given Linked list:-

            1.By value it contains.

            2.By location of node which it precedes.

In the following program we implement these two methods.

 Suppose we want to delete node which contains value k, then first  we look for this node and simply assign the value of its next-pointer to next-pointer of its previous node.

This also works in 2nd method except first we have to look for node which following the Given node.

Program:-

#include<iostream>

#include<conio.h>

using namespace std;


struct node {

                int info;

                node *next;

                };

                node *head1;

 node *create()

   {

           int n,i,data,;

           

           node *p1,*temp1;

           head1=NULL;

           temp1=NULL;

          cout<<"\n\tHow many Elements you want to enter:\n";

          cout<<"\t";

          cin>>n;

          cout<<"\n\t Enter Elemnts:\n";

          for(i=0;i<n;i++)

           {

              cout<<"\t";

              cin>>data;

              if(head1==NULL)

               {

                  p1=new node;

                  p1->info=data;

                  p1->next=NULL;

                  head1=p1;

                  temp1=p1;

               }   

               else

                 {

                     p1=new node;

                     p1->info=data;

                     p1->next=NULL;

                     temp1->next=p1;

                     temp1=p1;

                 }  

            } 

            p1=head1;

       return p1;

}  

 void display(node *p2)

    {

          cout<<"\t";

          cout<<"Displaying:--\n"; 

          if(p2==NULL)

             {

                cout<<"\t";

               cout<<"There is no element in LInked List\n";

               }

           while(p2)

              {

                 cout<<"\t";

                 cout<<p2->info<<"\t";

                 p2=p2->next;

              } 

            

     }  

 node *delete1(node *p2)

  {

      int m,k,n,count=0;

      node *temp,*cash,;

      temp=head1;

      cash=NULL;

     p2=head1;

                cout<<"\n\tSelect method of deletion:\n\n";

                cout<<"\t 1.By Giving the location of Following Node\n";

                cout<<"\t 2.By Giving the value of Node\n";

                cout<<"\t";

                cin>>k;

                switch(k)

                 {

                    case 1:

                        cout<<"\t";

                        cout<<"Enter the position of following node";

                        cout<<"\t";

                        cin>>n;

                        while(p2)

                           {

                                 count++;

                                 if(count==(n+1))

                                   {

                                     if(cash==NULL) // If given node is first node

                                       {

                                           head1=p2->next;

                                       }

                                     else

                                        {

                                      cash->next=p2->next;  //assigning next pointer

                                      }

                                   p2=p2->next;       

                                   }

                                else

                                 {

                                 cash=p2;

                                 p2=p2->next;

                                 }

                            }          

                            break;

                                           

                   case 2:    

                        cout<<"\t";   

                       cout<<"\n\tEnter element to be deleted-\n";

                       cout<<"\t"; 

                        cin>>m;

                      cout<<"\t";

                     while(p2)

                       {

                   

                       if(p2->info==m)

                               {

                                if(cash==NULL) // if Given node is starting node

                                 {

                                 head1=p2->next;

                                 }

                         else

                          {

                            cash->next=p2->next;//assigning next-pointer

                          }

                          p2=p2->next;

                           } 

                           else

                           {

                           cash=p2;

                            p2=p2->next;

                            }    

                           }

                           break;

                   default:

                            cout<<"Enter valid Input\n: ";

                            delete1(p2);

                   }         

  p2=head1;

  return p2;

}

int main()

   {

          node *p1,*head,*temp;

          head=NULL;

          temp=NULL;

          p1=create();

          display(p1);

          p1=delete1(p1);

          cout<<"\n\t Linked List After Deletion:\n";

          display(p1);

          getch();

   }       

Output:

          1.By value it contains.





 2.By location of node which it precedes.



         If you want to share more information about topic discussed above or find anything incorrect Please do comments.

0 comments:

Post a Comment

 
Top