Algorithm for Deletion at Last Node of the Linked LIst
Delete End(info,next,start) 1.if(start=NULL) Print Underflow and Exit. 2.if(next[start]==NULL) Set ptr =start and start=NULL. set temp = info[ptr]. else cptr = start and ptr = next[start]. Repeat steps(a) and (b) while(next[ptr]!=NULL) (a) set cptr = ptr (b) set ptr = next[ptr] [end while] set next[cptr] = NULL temp = info[ptr] [end if] 3. free(ptr) 4. return temp 5. exit

Fuction of Deletion at the Last of Linked list
void deleteatlast(node **start) { node *ptr,*cptr; int temp; if((*start)->next == NULL) { ptr = *start ; *start = NULL; temp = ptr->info; } else { cptr = *start ; ptr =(*start)->next; while(ptr->next != NULL) { cptr = ptr; ptr = ptr->next; } cptr->next = NULL; temp = ptr->info; } free(ptr); printf("\nDeleted item is %d : \n",temp); }
Deletion at the Last of Linked list
#include<stdio.h> #include<conio.h> #include<malloc.h> typedef struct nodetype { int info; struct nodetype *next; } node ; void createlist(node **,int ); void deleteatlast(node **); void display(node *); void main() { node *start; int item,n,i; clrscr(); start=NULL; printf("Enter no. of nodes :\n"); scanf("%d",&n); for(i= 0 ;i< n ;i++) { printf("Item for node %d :\n",i+1); scanf("%d",&item); createlist(&start,item) ; } printf("The list is :\n"); display(start); printf("\nPress any key to delete last node"); getch(); deleteatlast(&start); printf("\nThe list after the deletion at first is :\n"); display(start); getch(); } void createlist(node **start,int item) { node *ptr,*last; 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 ; } } void deleteatlast(node **start) { node *ptr,*cptr; int temp; if((*start)->next == NULL) { ptr = *start ; *start = NULL; temp = ptr->info; } else { cptr = *start ; ptr =(*start)->next; while(ptr->next != NULL) { cptr = ptr; ptr = ptr->next; } cptr->next = NULL; temp = ptr->info; } free(ptr); printf("\nDeleted item is %d : \n",temp); } void display(node *start) { int n = 0; while(start !=NULL) { printf("\t %d",start->info); n++; start = start->next; } printf("\n Total number of nodes : %d",n); }
Output
