-->

Friday, February 21, 2014

Understanding traversing in circular linked list for Data Structure in 'C

Understanding traversing in circular linked list for Data Structure in 'C


Understanding traversing in circular linked list:

Let us consider the following circular linked list.

Let us assign a pointer PTR with ROOT, address of the first node. PTR is not equal to NULL. So, the circular linked list is not empty.

Repeat while TRUE

                Write: PTR-->INFO    i.e. 6 is written
                PTR-->LINK is not equal to ROOT. So, no break.
                PTR<--PTR-->LINK     Now PTR points to second node
                Write: PTR-->INFO     i.e. 16 is written
                PTR-->LINK is not equal to ROOT. So, no break.
                PTR<--PTR-->LINK       Now PTR points to third node
                Write: PTR-->INFO        i.e.  1 is written
                PTR-->LINK is not equal to ROOT. So, no break.
                PTR<--PTR-->LINK        Now PTR points to third node
               Write: PTR-->INFO         i.e. 61 is written
               PTR-->LINK is equal to ROOT. So, break.
The infinite loop breaks. So, the traversing is complete.

C Program to create and traverse Circular linked list:

     struct node
    {
      int info; struct node*link;
    };
    typedef struct node sn;
    main( )
    {
     sn *root,*temp,*new; char choice=’y’;
     root=NULL;
     clrscr( );
     while (choice==’y’)
     {
      new=(sn*)mallloc(sizeof(sn));
      if(new==NULL)
       {
        printf(“Memory allocation error…”); exit(0);
       }
        printf(“\nEnter node information:”);
        scanf(“%d”,&new->info);
        if(root==NULL)
        {
         root=new;     temp=root;
         }
        else
        {
         temp->link=new;   temp=new;
         }
       new->link=root;
       printf(“Do you want to continue…(y/n)”);
       choice=getche( );
     } /* end of while */
     printf(“\nThe Circular Linked list is:\n\n”);
     temp=root;
     while(1)
      {
       printf(“%d”,temp->info);
       if(temp->link==root)  break;
       temp=temp->link;
      }
     }      /* end of main( )*/


Read other related articles

Also read other articles

© Copyright 2013 Computer Programming | All Right Reserved