#include <iostream>
using namespace std;
struct node {
int data;
node * next;
} ;
class linked_list {
private :
node * head;
public :
linked_list( ) {
head = NULL ;
}
bool isempty( ) {
return ( head == NULL ) ;
}
void display( ) {
node * dis = head;
while ( dis ! = NULL ) {
cout << dis- > data << "\t " ;
dis = dis- > next;
}
cout << endl;
}
bool search( int num) {
node * ser = head;
while ( ser ! = NULL ) {
if ( ser- > data == num) {
return true ;
}
ser = ser- > next;
}
return false ;
}
void addstart( int value) {
node * newnode = new node;
newnode- > data = value;
newnode- > next = head;
head = newnode;
}
void addend( int value) {
node * newnode = new node;
newnode- > data = value;
newnode- > next = NULL ;
if ( head == NULL ) {
head = newnode;
} else {
node * temp = head;
while ( temp- > next ! = NULL ) {
temp = temp- > next;
}
temp- > next = newnode;
}
}
void Delete( int item) {
node * temp1 = NULL ;
node * temp2 = head;
while ( temp2 ! = NULL && temp2- > data ! = item) {
temp1 = temp2;
temp2 = temp2- > next;
}
if ( temp2 == NULL ) {
cout << "Item not found in the list." << endl;
return ;
}
if ( temp1 == NULL ) {
head = temp2- > next;
} else {
temp1- > next = temp2- > next;
}
delete temp2;
cout << "Item " << item << " deleted from the list." << endl;
}
} ;
int main( ) {
linked_list froo ;
int x;
cout << "Enter a value to add at the beginning of the list: " ;
cin >> x;
froo.addstart ( x) ;
cout << "Enter a value to add at the end of the list: " ;
cin >> x;
froo.addend ( x) ;
cout << "Enter a value to search in the list: " ;
cin >> x;
if ( froo.search ( x) ) {
cout << "Value " << x << " is found in the list." << endl;
} else {
cout << "Value " << x << " is not found in the list." << endl;
}
cout << "Enter a value to delete from the list: " ;
cin >> x;
froo.Delete ( x) ;
cout << "Updated list:" << endl;
froo.display ( ) ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBub2RlIHsKICAgIGludCBkYXRhOwogICAgbm9kZSAqbmV4dDsKfTsKCmNsYXNzIGxpbmtlZF9saXN0IHsKcHJpdmF0ZToKICAgIG5vZGUgKmhlYWQ7CgpwdWJsaWM6CiAgICBsaW5rZWRfbGlzdCgpIHsKICAgICAgICBoZWFkID0gTlVMTDsKICAgIH0KCiAgICBib29sIGlzZW1wdHkoKSB7CiAgICAgICAgcmV0dXJuIChoZWFkID09IE5VTEwpOwogICAgfQoKICAgIHZvaWQgZGlzcGxheSgpIHsKICAgICAgICBub2RlICpkaXMgPSBoZWFkOwogICAgICAgIHdoaWxlIChkaXMgIT0gTlVMTCkgewogICAgICAgICAgICBjb3V0IDw8IGRpcy0+ZGF0YSA8PCAiXHQiOwogICAgICAgICAgICBkaXMgPSBkaXMtPm5leHQ7CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgIH0KCiAgICBib29sIHNlYXJjaChpbnQgbnVtKSB7CiAgICAgICAgbm9kZSAqc2VyID0gaGVhZDsKICAgICAgICB3aGlsZSAoc2VyICE9IE5VTEwpIHsKICAgICAgICAgICAgaWYgKHNlci0+ZGF0YSA9PSBudW0pIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlciA9IHNlci0+bmV4dDsgCiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsgCiAgICB9CgogICAgdm9pZCBhZGRzdGFydChpbnQgdmFsdWUpIHsKICAgICAgICBub2RlICpuZXdub2RlID0gbmV3IG5vZGU7CiAgICAgICAgbmV3bm9kZS0+ZGF0YSA9IHZhbHVlOwogICAgICAgIG5ld25vZGUtPm5leHQgPSBoZWFkOwogICAgICAgIGhlYWQgPSBuZXdub2RlOwogICAgfQoKICAgIHZvaWQgYWRkZW5kKGludCB2YWx1ZSkgewogICAgICAgIG5vZGUgKm5ld25vZGUgPSBuZXcgbm9kZTsKICAgICAgICBuZXdub2RlLT5kYXRhID0gdmFsdWU7CiAgICAgICAgbmV3bm9kZS0+bmV4dCA9IE5VTEw7CgogICAgICAgIGlmIChoZWFkID09IE5VTEwpIHsKICAgICAgICAgICAgaGVhZCA9IG5ld25vZGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbm9kZSAqdGVtcCA9IGhlYWQ7CiAgICAgICAgICAgIHdoaWxlICh0ZW1wLT5uZXh0ICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgIHRlbXAgPSB0ZW1wLT5uZXh0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRlbXAtPm5leHQgPSBuZXdub2RlOwogICAgICAgIH0KICAgIH0KCiAgICB2b2lkIERlbGV0ZShpbnQgaXRlbSkgewogICAgICAgIG5vZGUgKnRlbXAxID0gTlVMTDsKICAgICAgICBub2RlICp0ZW1wMiA9IGhlYWQ7CgogICAgICAgIHdoaWxlICh0ZW1wMiAhPSBOVUxMICYmIHRlbXAyLT5kYXRhICE9IGl0ZW0pIHsKICAgICAgICAgICAgdGVtcDEgPSB0ZW1wMjsKICAgICAgICAgICAgdGVtcDIgPSB0ZW1wMi0+bmV4dDsKICAgICAgICB9CgogICAgICAgIGlmICh0ZW1wMiA9PSBOVUxMKSB7CiAgICAgICAgICAgIGNvdXQgPDwgIkl0ZW0gbm90IGZvdW5kIGluIHRoZSBsaXN0LiIgPDwgZW5kbDsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKHRlbXAxID09IE5VTEwpIHsgCiAgICAgICAgICAgIGhlYWQgPSB0ZW1wMi0+bmV4dDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0ZW1wMS0+bmV4dCA9IHRlbXAyLT5uZXh0OwogICAgICAgIH0KCiAgICAgICAgZGVsZXRlIHRlbXAyOwogICAgICAgIGNvdXQgPDwgIkl0ZW0gIiA8PCBpdGVtIDw8ICIgZGVsZXRlZCBmcm9tIHRoZSBsaXN0LiIgPDwgZW5kbDsKICAgIH0KfTsKCmludCBtYWluKCkgewogICAgbGlua2VkX2xpc3QgZnJvbyA7CiAgICBpbnQgeDsKCiAgICBjb3V0IDw8ICJFbnRlciBhIHZhbHVlIHRvIGFkZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaXN0OiAiOwogICAgY2luID4+IHg7CiAgICBmcm9vLmFkZHN0YXJ0KHgpOwoKICAgIGNvdXQgPDwgIkVudGVyIGEgdmFsdWUgdG8gYWRkIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3Q6ICI7CiAgICBjaW4gPj4geDsKICAgZnJvby5hZGRlbmQoeCk7CgogICAgY291dCA8PCAiRW50ZXIgYSB2YWx1ZSB0byBzZWFyY2ggaW4gdGhlIGxpc3Q6ICI7CiAgICBjaW4gPj4geDsKICAgIGlmIChmcm9vLnNlYXJjaCh4KSkgewogICAgICAgIGNvdXQgPDwgIlZhbHVlICIgPDwgeCA8PCAiIGlzIGZvdW5kIGluIHRoZSBsaXN0LiIgPDwgZW5kbDsKICAgIH0gZWxzZSB7CiAgICAgICAgY291dCA8PCAiVmFsdWUgIiA8PCB4IDw8ICIgaXMgbm90IGZvdW5kIGluIHRoZSBsaXN0LiIgPDwgZW5kbDsKICAgIH0KCiAgICBjb3V0IDw8ICJFbnRlciBhIHZhbHVlIHRvIGRlbGV0ZSBmcm9tIHRoZSBsaXN0OiAiOwogICAgY2luID4+IHg7CiAgICBmcm9vLkRlbGV0ZSh4KTsKCiAgICBjb3V0IDw8ICJVcGRhdGVkIGxpc3Q6IiA8PCBlbmRsOwogICAgZnJvby5kaXNwbGF5KCk7CgogICAgcmV0dXJuIDA7Cn0=