#include<bits/stdc++.h>
using namespace std;
class node {
public:
int data;
node* next;
};
class linked {
public:
node* head;
linked() {
head = NULL;
}
bool impty() {
return (head == NULL);
}
bool found(int value) {
bool f = false;
node* temp = head;
while (temp != NULL) {
if (temp->data == value) {
f = true;
break;
}
temp = temp->next;
}
return f;
}
void inserf(int v2) {
node* newnode = new node();
newnode->data = v2;
newnode->next = head;
head = newnode;
}
void append(int v3) {
node* newnode = new node();
newnode->data = v3;
newnode->next = NULL;
if (impty()) {
head = newnode;
} else {
node* temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newnode;
}
}
void disp() {
if (impty()) {
cout << "No elements\n";
} else {
node* temp = head;
while (temp != NULL) {
cout << temp->data << " ";
temp = temp->next;
}
cout << endl;
}
}
void insertAt(int pos, int value) {
node* newNode = new node();
newNode->data = value;
newNode->next = NULL;
if (pos == 1) {
newNode->next = head;
head = newNode;
cout << "Element inserted successfully at position 1\n";
return;
}
node* temp = head;
for (int i = 1; i < pos - 1 && temp != NULL; ++i) {
temp = temp->next;
}
if (temp == NULL) {
cout << "Position out of range\n";
return;
}
newNode->next = temp->next;
temp->next = newNode;
cout << "Element inserted successfully at position " << pos << endl;
}
bool search(int value) {
node* temp = head;
while (temp != NULL) {
if (temp->data == value) {
return true;
}
temp = temp->next;
}
return false;
}
void deleteElement(int value) {
node* temp = head;
node* prev = NULL;
if (temp != NULL && temp->data == value) {
head = temp->next;
delete temp;
return;
}
while (temp != NULL && temp->data != value) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) {
cout << "Element not found\n";
return;
}
prev->next = temp->next;
delete temp;
}
};
int main() {
linked link;
int n, data;
cout << "Enter the number of elements to append: ";
cin >> n;
cout << "Enter " << n << " elements to append:\n";
for (int i = 0; i < n; ++i) {
cin >> data;
link.append(data);
}
link.disp();
int pos, value;
cout << "Enter position and value to insert: ";
cin >> pos >> value;
link.insertAt(pos, value);
link.disp();
int searchValue;
cout << "Enter value to search: ";
cin >> searchValue;
if (link.search(searchValue)) {
cout << searchValue << " found in the list\n";
} else {
cout << searchValue << " not found in the list\n";
}
int dt;
cout << "Enter value to delete: ";
cin >> dt;
link.deleteElement(dt);
link.disp();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjbGFzcyBub2RlIHsKcHVibGljOgogICAgaW50IGRhdGE7CiAgICBub2RlKiBuZXh0Owp9OwogCmNsYXNzIGxpbmtlZCB7CnB1YmxpYzoKICAgIG5vZGUqIGhlYWQ7CiAKICAgIGxpbmtlZCgpIHsKICAgICAgICBoZWFkID0gTlVMTDsKICAgIH0KIAogICAgYm9vbCBpbXB0eSgpIHsKICAgICAgICByZXR1cm4gKGhlYWQgPT0gTlVMTCk7CiAgICB9CiAKICAgIGJvb2wgZm91bmQoaW50IHZhbHVlKSB7CiAgICAgICAgYm9vbCBmID0gZmFsc2U7CiAgICAgICAgbm9kZSogdGVtcCA9IGhlYWQ7CiAgICAgICAgd2hpbGUgKHRlbXAgIT0gTlVMTCkgewogICAgICAgICAgICBpZiAodGVtcC0+ZGF0YSA9PSB2YWx1ZSkgewogICAgICAgICAgICAgICAgZiA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICB0ZW1wID0gdGVtcC0+bmV4dDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGY7CiAgICB9CiAKICAgIHZvaWQgaW5zZXJmKGludCB2MikgewogICAgICAgIG5vZGUqIG5ld25vZGUgPSBuZXcgbm9kZSgpOwogICAgICAgIG5ld25vZGUtPmRhdGEgPSB2MjsKICAgICAgICBuZXdub2RlLT5uZXh0ID0gaGVhZDsKICAgICAgICBoZWFkID0gbmV3bm9kZTsKICAgIH0KIAogICAgdm9pZCBhcHBlbmQoaW50IHYzKSB7CiAgICAgICAgbm9kZSogbmV3bm9kZSA9IG5ldyBub2RlKCk7CiAgICAgICAgbmV3bm9kZS0+ZGF0YSA9IHYzOwogICAgICAgIG5ld25vZGUtPm5leHQgPSBOVUxMOwogICAgICAgIGlmIChpbXB0eSgpKSB7CiAgICAgICAgICAgIGhlYWQgPSBuZXdub2RlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG5vZGUqIHRlbXAgPSBoZWFkOwogICAgICAgICAgICB3aGlsZSAodGVtcC0+bmV4dCAhPSBOVUxMKSB7CiAgICAgICAgICAgICAgICB0ZW1wID0gdGVtcC0+bmV4dDsKICAgICAgICAgICAgfQogICAgICAgICAgICB0ZW1wLT5uZXh0ID0gbmV3bm9kZTsKICAgICAgICB9CiAgICB9CiAKICAgIHZvaWQgZGlzcCgpIHsKICAgICAgICBpZiAoaW1wdHkoKSkgewogICAgICAgICAgICBjb3V0IDw8ICJObyBlbGVtZW50c1xuIjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBub2RlKiB0ZW1wID0gaGVhZDsKICAgICAgICAgICAgd2hpbGUgKHRlbXAgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgY291dCA8PCB0ZW1wLT5kYXRhIDw8ICIgIjsKICAgICAgICAgICAgICAgIHRlbXAgPSB0ZW1wLT5uZXh0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvdXQgPDwgZW5kbDsKICAgICAgICB9CiAgICB9CiAKICAgIHZvaWQgaW5zZXJ0QXQoaW50IHBvcywgaW50IHZhbHVlKSB7CiAgICAgICAgbm9kZSogbmV3Tm9kZSA9IG5ldyBub2RlKCk7CiAgICAgICAgbmV3Tm9kZS0+ZGF0YSA9IHZhbHVlOwogICAgICAgIG5ld05vZGUtPm5leHQgPSBOVUxMOwogCiAgICAgICAgaWYgKHBvcyA9PSAxKSB7CiAgICAgICAgICAgIG5ld05vZGUtPm5leHQgPSBoZWFkOwogICAgICAgICAgICBoZWFkID0gbmV3Tm9kZTsKICAgICAgICAgICAgY291dCA8PCAiRWxlbWVudCBpbnNlcnRlZCBzdWNjZXNzZnVsbHkgYXQgcG9zaXRpb24gMVxuIjsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KIAogICAgICAgIG5vZGUqIHRlbXAgPSBoZWFkOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgcG9zIC0gMSAmJiB0ZW1wICE9IE5VTEw7ICsraSkgewogICAgICAgICAgICB0ZW1wID0gdGVtcC0+bmV4dDsKICAgICAgICB9CiAKICAgICAgICBpZiAodGVtcCA9PSBOVUxMKSB7CiAgICAgICAgICAgIGNvdXQgPDwgIlBvc2l0aW9uIG91dCBvZiByYW5nZVxuIjsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KIAogICAgICAgIG5ld05vZGUtPm5leHQgPSB0ZW1wLT5uZXh0OwogICAgICAgIHRlbXAtPm5leHQgPSBuZXdOb2RlOwogICAgICAgIGNvdXQgPDwgIkVsZW1lbnQgaW5zZXJ0ZWQgc3VjY2Vzc2Z1bGx5IGF0IHBvc2l0aW9uICIgPDwgcG9zIDw8IGVuZGw7CiAgICB9CiAKICAgIGJvb2wgc2VhcmNoKGludCB2YWx1ZSkgewogICAgICAgIG5vZGUqIHRlbXAgPSBoZWFkOwogICAgICAgIHdoaWxlICh0ZW1wICE9IE5VTEwpIHsKICAgICAgICAgICAgaWYgKHRlbXAtPmRhdGEgPT0gdmFsdWUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRlbXAgPSB0ZW1wLT5uZXh0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAKICAgIHZvaWQgZGVsZXRlRWxlbWVudChpbnQgdmFsdWUpIHsKICAgICAgICBub2RlKiB0ZW1wID0gaGVhZDsKICAgICAgICBub2RlKiBwcmV2ID0gTlVMTDsKIAogICAgICAgIGlmICh0ZW1wICE9IE5VTEwgJiYgdGVtcC0+ZGF0YSA9PSB2YWx1ZSkgewogICAgICAgICAgICBoZWFkID0gdGVtcC0+bmV4dDsKICAgICAgICAgICAgZGVsZXRlIHRlbXA7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAKICAgICAgICB3aGlsZSAodGVtcCAhPSBOVUxMICYmIHRlbXAtPmRhdGEgIT0gdmFsdWUpIHsKICAgICAgICAgICAgcHJldiA9IHRlbXA7CiAgICAgICAgICAgIHRlbXAgPSB0ZW1wLT5uZXh0OwogICAgICAgIH0KIAogICAgICAgIGlmICh0ZW1wID09IE5VTEwpIHsKICAgICAgICAgICAgY291dCA8PCAiRWxlbWVudCBub3QgZm91bmRcbiI7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAKICAgICAgICBwcmV2LT5uZXh0ID0gdGVtcC0+bmV4dDsKICAgICAgICBkZWxldGUgdGVtcDsKICAgIH0KfTsKIAppbnQgbWFpbigpIHsKICAgIGxpbmtlZCBsaW5rOwogICAgaW50IG4sIGRhdGE7CiAKICAgIGNvdXQgPDwgIkVudGVyIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gYXBwZW5kOiAiOwogICAgY2luID4+IG47CiAgICBjb3V0IDw8ICJFbnRlciAiIDw8IG4gPDwgIiBlbGVtZW50cyB0byBhcHBlbmQ6XG4iOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICBjaW4gPj4gZGF0YTsKICAgICAgICBsaW5rLmFwcGVuZChkYXRhKTsKICAgIH0KIAogICAgbGluay5kaXNwKCk7CiAKICAgIGludCBwb3MsIHZhbHVlOwogCiAgICBjb3V0IDw8ICJFbnRlciBwb3NpdGlvbiBhbmQgdmFsdWUgdG8gaW5zZXJ0OiAiOwogICAgY2luID4+IHBvcyA+PiB2YWx1ZTsKICAgIGxpbmsuaW5zZXJ0QXQocG9zLCB2YWx1ZSk7CiAgICBsaW5rLmRpc3AoKTsKIAogICAgaW50IHNlYXJjaFZhbHVlOwogICAgY291dCA8PCAiRW50ZXIgdmFsdWUgdG8gc2VhcmNoOiAiOwogICAgY2luID4+IHNlYXJjaFZhbHVlOwogICAgaWYgKGxpbmsuc2VhcmNoKHNlYXJjaFZhbHVlKSkgewogICAgICAgIGNvdXQgPDwgc2VhcmNoVmFsdWUgPDwgIiBmb3VuZCBpbiB0aGUgbGlzdFxuIjsKICAgIH0gZWxzZSB7CiAgICAgICAgY291dCA8PCBzZWFyY2hWYWx1ZSA8PCAiIG5vdCBmb3VuZCBpbiB0aGUgbGlzdFxuIjsKICAgIH0KIAogICAgaW50IGR0OwogICAgY291dCA8PCAiRW50ZXIgdmFsdWUgdG8gZGVsZXRlOiAiOwogICAgY2luID4+IGR0OwogICAgbGluay5kZWxldGVFbGVtZW50KGR0KTsKICAgIGxpbmsuZGlzcCgpOwogCiAgICByZXR1cm4gMDsKfQ==