//Circular Singly Linked List In An Unordered Manner. #include #include #include #include #include void create(); void insert(); void delete(); void display(); void displays(); typedef struct l_link{ int data; struct l_link *link; }node; node *head,*p,*q,*next,*r; int item,test; main() { int ch; char choice='y'; clrscr(); while(choice=='y') { // clrscr(); printf(" \n\n\n\t\t S I N G L Y L I N K E D_L I S T O P E R A T I O N\n"); printf("\t\t\t 1.C R E A T I O N \n"); printf("\t\t\t 2.I N S E R T I O N \n"); printf("\t\t\t 3.D E L E T I O N\n"); printf("\t\t\t 4.D I S P L A Y\n"); printf("\t\t\t 5.E X I T\n"); printf("Enter Your choice:"); scanf("%d",&ch); switch(ch) { case 1: create(); break; case 2: insert(); break; case 3: delete(); break; case 4: display(); break; case 5: exit(0); default: printf("Invalid Choice\n Retry:"); break; } displays(); printf("\nDo you Want To Continue[y/n]:"); scanf("%c",&choice); choice=getchar(); } getch(); } void create() { int n,i; item=1; head=NULL; printf("Enter The No. Of Data."); scanf("%d",&n); for(i=0;idata=item; if(head==NULL) { head=q; head->link=head; } else { next->link=q; q->link=head; } next=q; } return; } void insert() { int key; test=0; printf("\n Enter The Data To Be Inserted:"); scanf("%d",&item); printf("\nEnter The data To be Inserted Before."); scanf("%d",&key); q=(node*)malloc(sizeof(node)); q->data=item; q->link=NULL; if(head==NULL) { head=q; head->link=head; test=1; } if(key == head->data) { r=head; q->link=head; head=q; for(p=head->link;p->link!=r;p=p->link); p->link=head; test=1; } else { p=head; while(p->link!=head) { if(key == p->link->data) { test=1; break; } p=p->link; } q->link=p->link; p->link=q; } if(test==1) printf("\n The Entered Data Is Inserted."); else printf("\n The Entered data To Be Inserted Before Is Not Found.\ \nThe Entered Data Is Inserted At The End"); return; } void delete() { test=0; if(head==NULL) return; printf("\nEnter The Data To Be Deleted:"); scanf("%d",&item); if(item == head->data) { if(head->link==head) head=NULL; else { head=head->link; for(p=head;p->link!=head;p=p->link); p->link=head; } test=1; } p=head; while(p!=NULL) { q=p->link; if(item == q->data) { test=1; break; } p=p->link; } p->link=q->link; if(test==1) printf("\n The Entered Item Is Deleted."); else printf("\n The Entered Item Is Not Found."); free(q); return; } void display() { char con1='y'; if(head==NULL) { printf("\n No Node Is Present."); return; } printf("\nThe contents Of Linked List\n"); for(p=head;con1=='y';p=p->link) { item = p->data; printf("%d\t",item); printf("\n Do You Want To Display The Next Node?"); scanf("%c",&con1); con1=getchar(); } return; } void displays() { p=head; if(p==NULL) { printf("\n No Node Is Present."); return; } printf("\nThe contents Of Linked List\n"); for(p=head;p->link!=head;p=p->link) printf("%d\t",p->data); printf("%d\t",p->data); return; }