# 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
{
};
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
{
}
printf(“Do you want to continue…(y/n)”);
choice=getche( );
} /* end of while */