//deleting the last node of a linked list
// here we use two pointer for deletion temp points last node
//and temp 2 points 2nd last node
//because we need to assign NULL to the link part of the 2nd last node
//temp2->link = NULL;
// temp used to free the last node(free(temp);,temp=NULL)
#include<stdio.h>
#include<stdlib.h>
struct Node {
int data;
struct Node* link;
};
typedef struct Node node;
node* del_last(node*head){
if(head==NULL)
// if there is no node in the list
printf("list is alredy empty\n"); else if (head->link==NULL) {
// if there is one node in the list
head=NULL;
}
else{
node* temp=head;
node* temp2=head;
while(temp->link!=NULL){
temp2=temp;
temp=temp->link;
}
temp2->link=NULL;
temp=NULL;
}
return head;
}
int main(){
node
* head
=malloc(sizeof(node
));head->data=0;
head->link=NULL;
node
*ptr
=malloc(sizeof(node
));ptr->data=1;
ptr->link=NULL;
head->link=ptr;
node
*ptr2
=malloc(sizeof(node
));ptr2->data=2;
ptr2->link=NULL;
ptr->link=ptr2;
head=del_last(head);
ptr=head;
while(ptr!=NULL){
ptr=ptr->link;
}
}
Ly9kZWxldGluZyB0aGUgbGFzdCBub2RlIG9mIGEgbGlua2VkIGxpc3QKLy8gaGVyZSB3ZSB1c2UgdHdvIHBvaW50ZXIgZm9yIGRlbGV0aW9uIHRlbXAgcG9pbnRzIGxhc3Qgbm9kZQovL2FuZCB0ZW1wIDIgcG9pbnRzIDJuZCBsYXN0IG5vZGUKLy9iZWNhdXNlIHdlIG5lZWQgdG8gYXNzaWduIE5VTEwgdG8gdGhlIGxpbmsgcGFydCBvZiB0aGUgMm5kIGxhc3Qgbm9kZQovL3RlbXAyLT5saW5rID0gTlVMTDsKLy8gdGVtcCB1c2VkIHRvIGZyZWUgdGhlIGxhc3Qgbm9kZShmcmVlKHRlbXApOyx0ZW1wPU5VTEwpCiNpbmNsdWRlPHN0ZGlvLmg+CiNpbmNsdWRlPHN0ZGxpYi5oPgoKc3RydWN0IE5vZGUgewogICAgaW50IGRhdGE7CiAgICBzdHJ1Y3QgTm9kZSogbGluazsKfTsKdHlwZWRlZiBzdHJ1Y3QgTm9kZSAgbm9kZTsKCm5vZGUqIGRlbF9sYXN0KG5vZGUqaGVhZCl7CiAgICBpZihoZWFkPT1OVUxMKQogICAgLy8gaWYgdGhlcmUgaXMgbm8gbm9kZSBpbiB0aGUgbGlzdCAKICAgICAgICBwcmludGYoImxpc3QgaXMgYWxyZWR5IGVtcHR5XG4iKTsKICAgIGVsc2UgaWYgKGhlYWQtPmxpbms9PU5VTEwpIHsKICAgICAgICAvLyBpZiB0aGVyZSBpcyBvbmUgbm9kZSBpbiB0aGUgbGlzdAogICAgICAgIGZyZWUoaGVhZCk7CiAgICAgICAgaGVhZD1OVUxMOwogICAgfQogICAgZWxzZXsKICAgICAgICBub2RlKiB0ZW1wPWhlYWQ7CiAgICAgICAgbm9kZSogdGVtcDI9aGVhZDsKICAgICAgICB3aGlsZSh0ZW1wLT5saW5rIT1OVUxMKXsKICAgICAgICAgICAgdGVtcDI9dGVtcDsKICAgICAgICAgICAgdGVtcD10ZW1wLT5saW5rOwogICAgICAgIH0KICAgICAgICB0ZW1wMi0+bGluaz1OVUxMOwogICAgICAgIGZyZWUodGVtcCk7CiAgICAgICAgdGVtcD1OVUxMOwogICAgfQogIHJldHVybiBoZWFkOwoKfQoKaW50IG1haW4oKXsKbm9kZSogaGVhZD1tYWxsb2Moc2l6ZW9mKG5vZGUpKTsKaGVhZC0+ZGF0YT0wOwpoZWFkLT5saW5rPU5VTEw7Cgpub2RlKnB0cj1tYWxsb2Moc2l6ZW9mKG5vZGUpKTsKcHRyLT5kYXRhPTE7CnB0ci0+bGluaz1OVUxMOwpoZWFkLT5saW5rPXB0cjsKCm5vZGUqcHRyMj1tYWxsb2Moc2l6ZW9mKG5vZGUpKTsKcHRyMi0+ZGF0YT0yOwpwdHIyLT5saW5rPU5VTEw7CnB0ci0+bGluaz1wdHIyOwoKaGVhZD1kZWxfbGFzdChoZWFkKTsKCgoKcHRyPWhlYWQ7CndoaWxlKHB0ciE9TlVMTCl7CiAgICBwcmludGYoIiVkICIscHRyLT5kYXRhKTsKICAgIHB0cj1wdHItPmxpbms7Cn0KCgp9Cgo=