My photo
Bangalore, Karnataka, India
Extending one hand to help someone has more value rather than joining two hands for prayer

Archives

program to reversea link list

Tuesday, September 1, 2009

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
struct node
{ int info;
  node *link;
};
class linklist
{ node *start;
  public:
  linklist()
  { start=NULL; }
  void insert(int);
  void reverse();
  void show();
 };

 void linklist::insert(int a)
 {  node *p=new node;
    p->info=a;
    if(start==NULL)
    { start=p;
      p->link=NULL;
    }
     else
     {  node *q=start;
    while(q->link!=NULL)
    { q=q->link;
    }
    q->link=p;
    p->link=NULL;
     }

  }

  void linklist::reverse()
  {   if(start==NULL)
      {   cout<<"there is no node";
      return;
      }

      node *p1,*p2,*p3,*p4;
      p1=start;
      p2=p1->link;
      p3=p2->link;

      if(p1->link==NULL)
      {   cout<<"there is only one node";
      return;
      }
      p1->link=NULL;

      while(p2!=NULL)
      {

     if(p2->link==NULL)
     {    p2->link=p1;
          start=p2;
          return;
     }
     p4=p3->link;

     if(p3->link==NULL)
     {   p3->link=p2;
         p2->link=p1;
         start=p3;
         return;
      }

     p3->link=p2;
     p2->link=p1;
     p1=p3;
     p2=p4;
     p3=p4->link;
      }
    }





   void linklist::show()
   {
      node *p=start;
      while(p!=NULL)
      {   cout<<p->info<<endl;
      p=p->link;
      }
    }
  void main()
  {
     clrscr();
     linklist l1;
     l1.insert(10);
     l1.insert(20);
     l1.insert(30);
     l1.insert(40);
     l1.insert(50);
     l1.show();
     getch();
     l1.reverse();
     l1.show();
     getch();
   }

0 comments: