#include<stdio.h> #include<conio.h> #include<stdlib.h> struct lnklist { int data; struct lnklist *next; }; typedef struct lnklist NODE ; NODE *start=NULL; void insertAtBeg(); void insertAtAnyPos(); void insert(); void display(); void delet(); void deleteAtEnd(); void deleteAtBeg(); int main (void) { int ch=0; while(ch!=8) { printf("\nEnter your choise:\n1. Insert At Beg\n2. Insert At Any Position\n3. Insert At End\n4. Display\n5. Delete At Begining\n6. Delete At Any Position \n7. delete At End\n8. Exit\n"); scanf("%d",&ch); switch(ch) { case 1: insertAtBeg(); break; case 2: insertAtAnyPos(); break; case 3: insert(); break; case 4: display(); break; case 5: deleteAtBeg(); break; case 6: delet(); break; case 7: deleteAtEnd(); break; } } return 0; } void insert() { NODE *p,*node; p=(NODE*)malloc(sizeof(NODE)); if(p==NULL) printf("NO Space!"); else { printf("Enter the element in node: "); scanf("%d",&p->data); p->next=NULL; if(start==NULL) start=p; else { node=start; while(node->next!=start) { node=node->next; } node->next=p; } p->next=start; } clrscr(); } void display() { NODE *node; if(start==NULL) printf("List is Empty\n\n"); else { printf("The elements are: "); node=start; while(node->next!=start) { printf("%d ",node->data); node=node->next; } printf("%d ",node->data); } getch(); clrscr(); } void delet() { NODE *node,*p; int pos,i; if(start==NULL) printf("List is Empty! Deletion can't possible!\n\n"); else { node=start; printf("Enter the position: "); scanf("%d",&pos); if(pos==1) { if(node->next==start) start=NULL; else { node=start; while(node->next!=start) { node=node->next; } node->next=start->next; start=node->next;// } } else { for(i=1;i<pos;i++) { p=node; node=node->next; } p->next=node->next; } } } void deleteAtEnd() { NODE *node; node=start; while(node->next->next!=start) { node=node->next; } node->next=start; clrscr(); } void deleteAtBeg() { NODE *node,*p; if(start==NULL) printf("List is Empty! Deletion can't possible!\n\n"); else { node=start; if(node->next==start) start=NULL; else { node=start; while(node->next!=start) { node=node->next; } node->next=start->next; start=node->next; } } clrscr(); } void insertAtBeg() { NODE *p,*node; p=(NODE*)malloc(sizeof(NODE)); if(p==NULL) printf("NO Space!"); else { printf("Enter the element in node: "); scanf("%d",&p->data); p->next=NULL; if(start==NULL) { start=p; p->next=start; } else { node=start; while(node->next!=start) { node=node->next; } node->next=p; p->next=start; start=p; } start=p; } clrscr(); } void insertAtAnyPos() { NODE *p,*node; int pos,i; p=(NODE*)malloc(sizeof(NODE)); if(p==NULL) printf("NO Space!"); else { printf("Enter the position: "); scanf("%d",&pos); printf("Enter the element in node: "); scanf("%d",&p->data); p->next=NULL; node=start; for(i=1;i<pos-1;i++) node=node->next; p->next=node->next; node->next=p; } clrscr(); }