#include <iostream>
using namespace std;
struct node {
int data;
node *next;
};
class LinkedList {
private:
node *head;
public:
LinkedList() {
head = NULL;
}
bool isempty() {
return (head == NULL);
}
void insertitem(int newvalue) {
node *newnode = new node;
newnode->data = newvalue;
newnode->next = NULL;
if (isempty()) {
head = newnode;
} else {
newnode->next = head;
head = newnode;
}
}
void display() {
if (isempty()) {
cout << "The list is empty." << endl;
return;
}
node *traver = head;
while (traver != NULL) {
cout << traver->data << " ";
traver = traver->next;
}
cout << endl;
}
void deletitem(int item) {
if (isempty()) {
cout << "List is empty, no items to delete." << endl;
return;
}
node *delptr = head;
node *prev = NULL;
if (head->data == item) {
head = head->next;
delete delptr;
cout << "Item " << item << " deleted successfully." << endl;
return;
}
while (delptr != NULL && delptr->data != item) {
prev = delptr;
delptr = delptr->next;
}
if (delptr != NULL) {
prev->next = delptr->next;
delete delptr;
cout << "Item " << item << " deleted successfully." << endl;
} else {
cout << "Item " << item << " not found in the list." << endl;
}
}
bool search(int num) {
node *temp = head;
while (temp != NULL) {
if (temp->data == num) {
cout << "true\n";
return true;
}
temp = temp->next;
}
cout << "false\n";
return false;
}
int count() {
int counter = 0;
node *temp = head;
while (temp != NULL) {
counter++;
temp = temp->next;
}
cout << "the length of linked list = " << counter << endl;
return counter;
}
void insertEnd(int newvalue) {
node *newnode = new node;
newnode->data = newvalue;
newnode->next = NULL;
if (head == NULL) {
head = newnode;
} else {
node *temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newnode;
}
}
};
int main() {
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3Qgbm9kZSB7CiAgICBpbnQgZGF0YTsKICAgIG5vZGUgKm5leHQ7Cn07CgpjbGFzcyBMaW5rZWRMaXN0IHsKcHJpdmF0ZToKICAgIG5vZGUgKmhlYWQ7CnB1YmxpYzoKICAgIExpbmtlZExpc3QoKSB7CiAgICAgICAgaGVhZCA9IE5VTEw7CiAgICB9CgogICAgYm9vbCBpc2VtcHR5KCkgewogICAgICAgIHJldHVybiAoaGVhZCA9PSBOVUxMKTsKICAgIH0KCiAgICB2b2lkIGluc2VydGl0ZW0oaW50IG5ld3ZhbHVlKSB7CiAgICAgICAgbm9kZSAqbmV3bm9kZSA9IG5ldyBub2RlOwogICAgICAgIG5ld25vZGUtPmRhdGEgPSBuZXd2YWx1ZTsKICAgICAgICBuZXdub2RlLT5uZXh0ID0gTlVMTDsKICAgICAgICBpZiAoaXNlbXB0eSgpKSB7CiAgICAgICAgICAgIGhlYWQgPSBuZXdub2RlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG5ld25vZGUtPm5leHQgPSBoZWFkOwogICAgICAgICAgICBoZWFkID0gbmV3bm9kZTsKICAgICAgICB9CiAgICB9CgogICAgdm9pZCBkaXNwbGF5KCkgewogICAgICAgIGlmIChpc2VtcHR5KCkpIHsKICAgICAgICAgICAgY291dCA8PCAiVGhlIGxpc3QgaXMgZW1wdHkuIiA8PCBlbmRsOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG5vZGUgKnRyYXZlciA9IGhlYWQ7CiAgICAgICAgd2hpbGUgKHRyYXZlciAhPSBOVUxMKSB7CiAgICAgICAgICAgIGNvdXQgPDwgdHJhdmVyLT5kYXRhIDw8ICIgIjsKICAgICAgICAgICAgdHJhdmVyID0gdHJhdmVyLT5uZXh0OwogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICB9CgogICAgdm9pZCBkZWxldGl0ZW0oaW50IGl0ZW0pIHsKICAgICAgICBpZiAoaXNlbXB0eSgpKSB7CiAgICAgICAgICAgIGNvdXQgPDwgIkxpc3QgaXMgZW1wdHksIG5vIGl0ZW1zIHRvIGRlbGV0ZS4iIDw8IGVuZGw7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG5vZGUgKmRlbHB0ciA9IGhlYWQ7CiAgICAgICAgbm9kZSAqcHJldiA9IE5VTEw7CgogICAgICAgIGlmIChoZWFkLT5kYXRhID09IGl0ZW0pIHsKICAgICAgICAgICAgaGVhZCA9IGhlYWQtPm5leHQ7CiAgICAgICAgICAgIGRlbGV0ZSBkZWxwdHI7CiAgICAgICAgICAgIGNvdXQgPDwgIkl0ZW0gIiA8PCBpdGVtIDw8ICIgZGVsZXRlZCBzdWNjZXNzZnVsbHkuIiA8PCBlbmRsOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoZGVscHRyICE9IE5VTEwgJiYgZGVscHRyLT5kYXRhICE9IGl0ZW0pIHsKICAgICAgICAgICAgcHJldiA9IGRlbHB0cjsKICAgICAgICAgICAgZGVscHRyID0gZGVscHRyLT5uZXh0OwogICAgICAgIH0KCiAgICAgICAgaWYgKGRlbHB0ciAhPSBOVUxMKSB7CiAgICAgICAgICAgIHByZXYtPm5leHQgPSBkZWxwdHItPm5leHQ7CiAgICAgICAgICAgIGRlbGV0ZSBkZWxwdHI7CiAgICAgICAgICAgIGNvdXQgPDwgIkl0ZW0gIiA8PCBpdGVtIDw8ICIgZGVsZXRlZCBzdWNjZXNzZnVsbHkuIiA8PCBlbmRsOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvdXQgPDwgIkl0ZW0gIiA8PCBpdGVtIDw8ICIgbm90IGZvdW5kIGluIHRoZSBsaXN0LiIgPDwgZW5kbDsKICAgICAgICB9CiAgICB9CgogICAgYm9vbCBzZWFyY2goaW50IG51bSkgewogICAgICAgIG5vZGUgKnRlbXAgPSBoZWFkOwogICAgICAgIHdoaWxlICh0ZW1wICE9IE5VTEwpIHsKICAgICAgICAgICAgaWYgKHRlbXAtPmRhdGEgPT0gbnVtKSB7CiAgICAgICAgICAgICAgICBjb3V0IDw8ICJ0cnVlXG4iOwogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGVtcCA9IHRlbXAtPm5leHQ7CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgImZhbHNlXG4iOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBpbnQgY291bnQoKSB7CiAgICAgICAgaW50IGNvdW50ZXIgPSAwOwogICAgICAgIG5vZGUgKnRlbXAgPSBoZWFkOwogICAgICAgIHdoaWxlICh0ZW1wICE9IE5VTEwpIHsKICAgICAgICAgICAgY291bnRlcisrOwogICAgICAgICAgICB0ZW1wID0gdGVtcC0+bmV4dDsKICAgICAgICB9CiAgICAgICAgY291dCA8PCAidGhlIGxlbmd0aCBvZiBsaW5rZWQgbGlzdCA9ICIgPDwgY291bnRlciA8PCBlbmRsOwogICAgICAgIHJldHVybiBjb3VudGVyOwogICAgfQoKICAgIHZvaWQgaW5zZXJ0RW5kKGludCBuZXd2YWx1ZSkgewogICAgICAgIG5vZGUgKm5ld25vZGUgPSBuZXcgbm9kZTsKICAgICAgICBuZXdub2RlLT5kYXRhID0gbmV3dmFsdWU7CiAgICAgICAgbmV3bm9kZS0+bmV4dCA9IE5VTEw7CgogICAgICAgIGlmIChoZWFkID09IE5VTEwpIHsKICAgICAgICAgICAgaGVhZCA9IG5ld25vZGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbm9kZSAqdGVtcCA9IGhlYWQ7CiAgICAgICAgICAgIHdoaWxlICh0ZW1wLT5uZXh0ICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgIHRlbXAgPSB0ZW1wLT5uZXh0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRlbXAtPm5leHQgPSBuZXdub2RlOwogICAgICAgIH0KICAgIH0KfTsKCgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCXJldHVybiAwOwp9