Circular Linked List
Circular Linked List
h>
#include<stdlib.h>
void insertleft(node**,node**);
void insertright(node**,node**);
void insertkey(node**,node**);
void insertpos(node**,node**);
void deletekey(node**,node**);
void deletepos(node**,node**);
void display(node*);
void display2(node *);
void count(node *);
int main()
{
int ch;
node *head=NULL,*tail=NULL;
do
{
printf("enter::\n1 to insert in right\n2 to insert in left\n3 to
insert by position\n4 to insert after a key\n5 to delete by key\n6 to
delete by position\n7 to display\n8 to display2\n9 to count nodes\n:::");
scanf("%d",&ch);
switch(ch)
{
case 1:
insertright(&head,&tail);
break;
case 2:
insertleft(&head,&tail);
break;
case 3:
insertpos(&head,&tail);
break;
case 4:
insertkey(&head,&tail);
break;
case 5:
deletekey(&head,&tail);
break;
case 6:
deletepos(&head,&tail);
break;
case 7:
display(head);
break;
case 8:
display2(head);
break;
case 9:
count(head);
break;
default:
printf("wrong choice\n");
}
printf("enter 1 to continue:");
scanf("%d",&ch);
}while(ch==1);
return 0;
}
}
}
}
}
else if(tc==*tail)
{
tp->next=*head;
*tail=tp;
free(tc);
}
else
{
tp->next=tc->next;
free(tc);
}
}
}
}
else if(pos==c)
{
tc=(*head)->next;
tp=tc;
while(tc->next!=*head)
{
tp=tc;
tc=tc->next;
}
tp->next=*head;
*tail=tp;
free(tc);
}
else if(pos>1&&pos<c){
int h=1;
tc=(*head)->next;
tp=tc;
while(tc!=NULL)
{
h++;
if(pos==h)
{
break;
}
tp=tc;
tc=tc->next;
}
tp->next=tc->next;
free(tc);
}
}
}