#include <iostream>
using namespace std;
struct node
{
int data;
node *next;
};
node *head = NULL;
void insertNode(int value);
void display();
void deleteNode(int value);
void insertBegin(int value);
void deleteBegin();
void delete_end();
int main()
{
insertNode(1);
insertNode(9);
insertNode(2);
display();
insertBegin(4);
display();
deleteBegin();
display();
return 0;
}
void insertNode(int value)
{
node *new_node, *last;
new_node = new node;
new_node->data = value;
if (head == NULL)
{
head = new_node;
new_node->next = NULL;
}
else
{
last = head;
while (last->next != NULL)
{
last = last->next;
}
last->next = new_node;
new_node->next = NULL;
}
}
void display()
{
node *current;
if (head == NULL)
{
cout << "linked list is empty" << endl;
}
else
{
current = head;
while (current != NULL)
{
cout << current->data << " ";
current = current->next;
}
}
cout << endl;
}
void deleteNode(int value)
{
node *current, *prev;
current = head;
prev = head;
if (current->data == value)
{
head = current->next;
free(current);
return;
}
while (current->data != value)
{
prev = current;
current = current->next;
}
prev->next = current->next;
free(current);
}
void insertBegin(int value){
node* new_node = new node;
new_node->data = value;
new_node->next = head ;
head = new_node;
}
void deleteBegin(){
if (head != NULL){
node* current, *prev;
current = head;
prev = head ;
current = current->next;
head = current;
free (prev);
}
else cout << "linkedlist is empty";
}
void delete_end(){
if(head==NULL){
cout<<"linked list is empty.\n";
}
else if(head->next==NULL){
delete(head);
head=NULL;
}
else{
node* ptr=head;
while(ptr->next->next!=NULL){
ptr=ptr->next;
}
delete(ptr->next);
ptr->next=NULL;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IG5vZGUKewogICAgaW50IGRhdGE7CiAgICBub2RlICpuZXh0Owp9Owpub2RlICpoZWFkID0gTlVMTDsKdm9pZCBpbnNlcnROb2RlKGludCB2YWx1ZSk7CnZvaWQgZGlzcGxheSgpOwp2b2lkIGRlbGV0ZU5vZGUoaW50IHZhbHVlKTsKdm9pZCBpbnNlcnRCZWdpbihpbnQgdmFsdWUpOwp2b2lkIGRlbGV0ZUJlZ2luKCk7CnZvaWQgZGVsZXRlX2VuZCgpOwppbnQgbWFpbigpCnsKICAgIGluc2VydE5vZGUoMSk7CiAgICBpbnNlcnROb2RlKDkpOwogICAgaW5zZXJ0Tm9kZSgyKTsKICAgIGRpc3BsYXkoKTsKICAgIGluc2VydEJlZ2luKDQpOwogICAgZGlzcGxheSgpOwogICAgZGVsZXRlQmVnaW4oKTsKICAgIGRpc3BsYXkoKTsKICAgIHJldHVybiAwOwp9CnZvaWQgaW5zZXJ0Tm9kZShpbnQgdmFsdWUpCnsKICAgIG5vZGUgKm5ld19ub2RlLCAqbGFzdDsKICAgIG5ld19ub2RlID0gbmV3IG5vZGU7CiAgICBuZXdfbm9kZS0+ZGF0YSA9IHZhbHVlOwoKICAgIGlmIChoZWFkID09IE5VTEwpCiAgICB7CiAgICAgICAgaGVhZCA9IG5ld19ub2RlOwogICAgICAgIG5ld19ub2RlLT5uZXh0ID0gTlVMTDsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBsYXN0ID0gaGVhZDsKICAgICAgICB3aGlsZSAobGFzdC0+bmV4dCAhPSBOVUxMKQogICAgICAgIHsKICAgICAgICAgICAgbGFzdCA9IGxhc3QtPm5leHQ7CiAgICAgICAgfQogICAgICAgIGxhc3QtPm5leHQgPSBuZXdfbm9kZTsKICAgICAgICBuZXdfbm9kZS0+bmV4dCA9IE5VTEw7CiAgICB9Cn0Kdm9pZCBkaXNwbGF5KCkKewogICAgbm9kZSAqY3VycmVudDsKCiAgICBpZiAoaGVhZCA9PSBOVUxMKQogICAgewogICAgICAgIGNvdXQgPDwgImxpbmtlZCBsaXN0IGlzIGVtcHR5IiA8PCBlbmRsOwogICAgfQoKICAgIGVsc2UKICAgIHsKICAgICAgICBjdXJyZW50ID0gaGVhZDsKCiAgICAgICAgd2hpbGUgKGN1cnJlbnQgIT0gTlVMTCkKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQgPDwgY3VycmVudC0+ZGF0YSA8PCAiICAiOwoKICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHQ7CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBlbmRsOwp9CnZvaWQgZGVsZXRlTm9kZShpbnQgdmFsdWUpCnsKICAgIG5vZGUgKmN1cnJlbnQsICpwcmV2OwogICAgY3VycmVudCA9IGhlYWQ7CiAgICBwcmV2ID0gaGVhZDsKICAgIGlmIChjdXJyZW50LT5kYXRhID09IHZhbHVlKQogICAgewogICAgICAgIGhlYWQgPSBjdXJyZW50LT5uZXh0OwogICAgICAgIGZyZWUoY3VycmVudCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgd2hpbGUgKGN1cnJlbnQtPmRhdGEgIT0gdmFsdWUpCiAgICB7CiAgICAgICAgcHJldiA9IGN1cnJlbnQ7CiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHQ7CiAgICB9CiAgICBwcmV2LT5uZXh0ID0gY3VycmVudC0+bmV4dDsKICAgIGZyZWUoY3VycmVudCk7Cn0Kdm9pZCBpbnNlcnRCZWdpbihpbnQgdmFsdWUpewogICBub2RlKiBuZXdfbm9kZSA9IG5ldyBub2RlOwogICBuZXdfbm9kZS0+ZGF0YSA9IHZhbHVlOwogICBuZXdfbm9kZS0+bmV4dCA9IGhlYWQgOwogICBoZWFkID0gbmV3X25vZGU7Cn0Kdm9pZCBkZWxldGVCZWdpbigpewogICAgaWYgKGhlYWQgIT0gTlVMTCl7CiAgICBub2RlKiBjdXJyZW50LCAqcHJldjsKICAgIGN1cnJlbnQgPSBoZWFkOwogICAgcHJldiA9IGhlYWQgOwogICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHQ7CiAgICBoZWFkID0gY3VycmVudDsKICAgIGZyZWUgKHByZXYpOwogICAgfQogICAgZWxzZSBjb3V0IDw8ICJsaW5rZWRsaXN0IGlzIGVtcHR5IjsKfQp2b2lkIGRlbGV0ZV9lbmQoKXsKICAgIGlmKGhlYWQ9PU5VTEwpewogICAgICAgIGNvdXQ8PCJsaW5rZWQgbGlzdCBpcyBlbXB0eS5cbiI7CiAgICB9CiAgICBlbHNlIGlmKGhlYWQtPm5leHQ9PU5VTEwpewogICAgICAgIGRlbGV0ZShoZWFkKTsKICAgICAgICBoZWFkPU5VTEw7CiAgICB9CiAgICBlbHNlewogICAgICAgIG5vZGUqIHB0cj1oZWFkOwoKICAgICAgICB3aGlsZShwdHItPm5leHQtPm5leHQhPU5VTEwpewogICAgICAgICAgICBwdHI9cHRyLT5uZXh0OwogICAgICAgIH0KCiAgICAgICAgZGVsZXRlKHB0ci0+bmV4dCk7CiAgICAgICAgcHRyLT5uZXh0PU5VTEw7CiAgICB9Cn0=