Google Search

Monday, April 4, 2011

C++ program for Link list program


#include<iostream.h>
#include<conio.h>
#include<alloc.h>



struct node
{
   int data;
   struct node *link;
};


int count(struct node *q)
{
   struct node *temp;
   temp=q;
   int count=0;
   while(temp!=NULL)
   {
      count++;
      temp=temp->link;
   }
   return count;
}

void append(struct node **q)

{
   struct node *temp,*r;
   int data;
   temp=*q;
   cout<<"\nEnter data to be inserted : ";
      cin>>data;
   if(temp==NULL)
   {
      temp=(struct node *)malloc(sizeof(struct node));

      temp->data=data;
      temp->link==NULL;
      *q=temp;
      cout<<"\nhead=="<<*q;
   }
   else
   {
      temp=*q;
      while(temp->link!=NULL)
   temp=temp->link;
      r=(struct node *)malloc(sizeof(struct node));
      //r->link==NULL;
    
      temp->link=r;
      r->data=data;
      r->link=NULL;  
   }
}

void display(struct node *q)
{
   struct node *temp;
   temp=q;
   if(temp==NULL)
   {
      cout<<"\n\nNo node has yet been created!!";
      getch();
      return;
   }
   cout<<"\nLinked list members are : ";
   while(temp!=NULL)
   {
      cout<<" "<<temp->data;
      temp=temp->link;
   }
}
void del(struct node **q)
{
    struct node *temp,*temp1;
    int loc,i;

    temp=*q;
    if(temp==NULL)
    {
       cout<<"\n\nNo node has yet been created!!";
       getch();
       return;
    }
    cout<<"\nEnter node no. to delete : ";
    cin>>loc;
    if(loc==1)
    {
        temp1=*q;
        temp1=temp1->link;
        free(*q);
        *q=temp1;    
         return;
    }  
    if(loc>count(temp)||loc<=0)
    {
       cout<<"\nNode doesn't exist !!";
       getch();
       return;
    }  
    for(i=1;i<loc-1;i++)
    {

       temp=temp->link;
    }
    temp1=temp->link;
    temp->link=temp1->link;
    free(temp1);
}



int main()
{
 
   struct node *head;
   head=NULL;
   int oprn;
   while(1)
   {
      cout<<"\nEnter oprn to be performed (0:exit,1:append,2:delete,3:display,4:count) : ";
      cin>>oprn;
      switch(oprn)
      {
 
      case 1:
   append(&head);
   break;

      case 2:
   del(&head);
        break;

      case 3:
   display(head);
        break;
      case 4:
   cout<<"\n\nNo of nodes = "<<count(head);
        break;
      
      default:
         break;          
      }
  
  }
  return 0;
}
 


0 comments:

Post a Comment