#include<stdio.h> #include<conio.h> #include<alloc.h> struct node { int data; struct node *next; }; struct node *start,*temp; void addbeg(int); void addend(int); void addinside(int,int); void deletenode(int); void modifynode(int,int); void displaynode(); int countnode(); void main() { int ch,ele,c,pos; clrscr(); do { printf("\n1.Add beg\n"); printf("2.Add end\n"); printf("3.Add anywhere\n"); printf("4.Delete node\n"); printf("5.Modify node\n"); printf("6.Count node\n"); printf("7.Display \n"); printf("8.Exit\n"); printf("Enter your choice :-"); scanf("%d",&ch); switch(ch) { case 1: printf("Enter element :-"); scanf("%d",&ele); addbeg(ele); break; case 2: printf("Enter element :-"); scanf("%d",&ele); addend(ele); break; case 3: printf("Enter element :-"); scanf("%d",&ele); printf("Enter position number :-"); scanf("%d",&pos); addinside(ele,pos); break; case 4: printf("Enter position number for modify:-"); scanf("%d",&pos); deletenode(pos); break; case 5: printf("Enter element :-"); scanf("%d",&ele); printf("Enter position number for modify:-"); scanf("%d",&pos); modifynode(ele,pos); break; case 6: c=countnode(); printf("Total number of node :- %d",c); break; case 7: displaynode(); break; case 8: printf("Program end <press enter to exit>"); break; default: printf("Invalid option select...\n"); } }while(ch != 8); getch(); } int countnode() { int c=0; temp=start; while(temp!=NULL) { c++; temp=temp->next; } return(c); } void displaynode() { temp=start; while(temp!=NULL) { printf("%d\t",temp->data); temp=temp->next; } printf("\n"); } void addbeg(int ele) { temp=(node *)malloc(sizeof(struct node)); temp->data=ele; if(start == NULL) { temp->next=NULL; } else { temp->next=start; } start=temp; } void addend(int ele) { struct node *t1; temp=(node *)malloc(sizeof(struct node)); temp->data=ele; temp->next=NULL; if(start == NULL) { start=temp; } else { t1=start; while(t1->next != NULL) { t1=t1->next; } t1->next=temp; } } void addinside(int ele,int pos) { struct node *t1; int c,i; c=countnode(); if(pos>1 && pos<c) { t1=start; temp=(node *)malloc(sizeof(struct node)); temp->data=ele; for(i=1;i<=pos-2;i++) { t1=t1->next; } temp->next=t1->next; t1->next=temp; } else { printf("Invalid position number......."); } } void modifynode(int ele,int pos) { struct node *t1; int c,i; c=countnode(); if(pos>=1 && pos<=c) { t1=start; for(i=1;i<=pos-1;i++) { t1=t1->next; } t1->data=ele; printf("List update...........\n"); } else { printf("Invalid position number......."); } } void deletenode(int pos) { struct node *t1,*prev; int c,i; c=countnode(); t1=start; if(pos>=1 && pos<=c) { if(pos == 1) { start=start->next; } else if(pos == c) { while(t1->next != NULL) { prev=t1; t1=t1->next; } prev->next=NULL; } else { for(i=1;i<=pos-1;i++) { prev=t1; t1=t1->next; } prev->next=t1->next; } printf("Delete element %d\n",t1->data); free(t1); } else { printf("Invalid position number......."); } }
Tuesday, November 2, 2010
Link List Program
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment