/* Program to perform operations on a linked list */ #include#include struct link { int info; struct link *next; }; typedef struct link node; void swap(int *x,int *y) { int temp=*x; *x=*y; *y=temp; } void create(node **ptr) { char ch; node *temp; temp=*ptr; do { printf("Enter information : "); scanf("%d",&temp->info); printf("\nDATA INSERTED : \n"); printf("Want to add more ? (press y to continue) : "); scanf("%s",&ch); if(ch=='y'||ch=='Y') { temp->next=(node *)malloc(sizeof(node)); temp=temp->next; } } while(ch=='y'||ch=='Y'); temp->next=NULL; } void insert_front(node **ptr) { node *new; new=(node *)malloc(sizeof(node)); printf("\nEnter the data to insert : "); scanf("%d",&new->info); new->next=*ptr; *ptr=new; printf("\nDATA INSERTED : \n"); } void insert_end(node **ptr) { node *new; node *temp; temp=*ptr; new=(node *)malloc(sizeof(node)); printf("\nEnter the data to insert : "); scanf("%d",&new->info); while(temp->next!=NULL) temp=temp->next; new->next=NULL; temp->next=new; printf("\nDATA INSERTED : \n"); } void insert_pos(node **ptr) { int i,pos; node *new; node *temp; temp=*ptr; new=(node *)malloc(sizeof(node)); printf("\nEnter the position : "); scanf("%d",&pos); printf("\nEnter data to insert : "); scanf("%d",&new->info); for(i=0;i next; new->next=temp->next; temp->next=new; printf("\nDATA INSERTED : \n"); } void display(node *temp) { printf("\nThe list is :"); while(temp!=NULL) { printf(" %d --> ",temp->info); temp=temp->next; } printf("\b\b\b\b "); printf("\n"); } void sort(node **ptr) { node *i,*j; int temp; for(i=*ptr;i->next!=NULL; i=i->next) for(j=i->next; j!=NULL; j=j->next) if(i->info > j->info) swap(&i->info,&j->info); printf("\n"); } void reverse(node **ptr) { node *current,*prev,*temp; current=*ptr; prev=temp=NULL; while(current!=NULL) { temp=prev; prev=current; current=current->next; prev->next=temp; } *ptr=prev; } void del_pos(node **ptr) { int nd,x; node *current,*prev=NULL; current=*ptr; printf("Enter the element to delete : "); scanf("%d",&x); if(*ptr==NULL) printf("\nList is empty !!!!"); while(current!=NULL) { if(current->info==x) { if(current==*ptr) { *ptr=current->next; free(current); } else { prev->next=current->next; free(current); } } else { prev=current; current=current->next; } } printf("\nElement deleted \n"); } main() { printf("\nPROGRAM TO PERFORM OPERATIONS ON LINKED LIST : \n"); int ch,pos; node *head; head=(node *)malloc(sizeof(node)); do { printf("[1] Create a node : \n"); printf("[2] Insert at the front : \n"); printf("[3] Insert at the end : \n"); printf("[4] Insert at other postions : \n"); printf("[5] Delete a node : \n"); printf("[6] Sort the linked list : \n"); printf("[7] Reverse the linked list : \n"); printf("[8] Display the list : \n"); printf("[9] Quit \n"); printf("Enter your choice : "); scanf("%d",&ch); switch(ch) { case 1: create(&head); break; case 2: insert_front(&head); break; case 3: insert_end(&head); break; case 4: insert_pos(&head); break; case 5: del_pos(&head); break; case 6: sort(&head); break; case 7: reverse(&head); break; case 8: display(head); break; } }while(ch!=9); }
Linked list operations
Posted by
LAHAUL SETH
~
Linked list operations
2011-11-29T10:48:00+05:30
LAHAUL SETH
Linked List in C
|
Programming in C
|
Comments (0)
Post a new comment
Comments by IntenseDebate
Linked list operations
2011-11-29T10:48:00+05:30
LAHAUL SETH
Linked List in C
|
Programming in C
|