Insertion At Location in linear linked list
Algorithm
InsertAtlocDll(info,next,start,end,loc,size) 1.set nloc = loc-1 , n=1 2.create a new node and address in assigned to ptr. 3.check[overflow] if(ptr=NULL) write:overflow and exit 4.set Info[ptr]=item; 5.if(start=NULL) set next[ptr] = NULL set start = ptr else if(nloc<=size) repeat steps a and b while(n != nloc) a. loc = next[loc] b. n = n+1 [end while] next[ptr] = next[loc] next[loc] = ptr else set last = start; repeat step (a) while(next[last]!= NULL) a. last=next[last] [end while] last->next = ptr ; [end if] 6.Exit.
Fuction For Insert at Location
void insertAtloc(node **start,int item , int i,int k ) { node *ptr,*loc,*last; int n=1 ; i=i-1; ptr=(node*)malloc(sizeof(node)); ptr->info=item; loc = *start ; if(*start==NULL) { ptr->next = NULL ; *start = ptr ; } else if(i<=k) { while(n != i) { loc=loc->next; n++; } ptr->next = loc->next ; loc->next = ptr ; } else { last = *start; while(last->next != NULL) {last=last->next; } last->next = ptr ; } }
C programe for insertion at location in linear linked list
#include<stdio.h> #include<malloc.h> #include<conio.h> typedef struct Node { int info ; struct Node *next; }node; void createsig(node**,int); void insertAtloc(node **,int,int,int); void display(node *); void main() { int ch, item, pos,loc,i; node *start ; start = NULL; clrscr(); printf("Enter number of node: "); scanf("%d",&i); createsig(&start,i); printf("\nThe list is : "); display(start); printf("\nEnter the loc : "); scanf("%d",&loc); printf("\n\nEnter the item to be inserted at loc : "); scanf("%d",&item); insertAtloc(&start,item,loc,i); printf("\nNow the list is : "); display(start); getch(); } void createsig(node **start,int i) { int item ,k=1; while(i) { node *ptr,*last; printf("\nEnter the info for node %d : ",k); scanf("%d",&item); ptr=(node*)malloc(sizeof(node)); ptr->info=item; ptr->next=NULL; if(*start==NULL) { *start = ptr ; } else { last = *start; while(last->next != NULL) {last=last->next; } last->next = ptr ; } i--; k++; } } void insertAtloc(node **start,int item , int i,int k ) { node *ptr,*loc,*last; int n=1 ; i=i-1; ptr=(node*)malloc(sizeof(node)); ptr->info=item; loc = *start ; if(*start==NULL) { ptr->next = NULL ; *start = ptr ; } else if(i<=k) { while(n != i) { loc=loc->next; n++; } ptr->next = loc->next ; loc->next = ptr ; } else { last = *start; while(last->next != NULL) {last=last->next; } last->next = ptr ; } } void display(node *start) { while(start !=NULL) { printf("\t %d",start->info); start = start->next; } }