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

