#include <iostream>
#include <string>
using namespace std;
struct Node{
string mail;
Node* next;
};
class LinkedList{
public:
Node* head;
Node* tail;
LinkedList(){
head = nullptr;
tail = nullptr;
}
void printAllMails(){
Node* temp = head;
while(temp != nullptr){
cout << temp->mail << endl;
temp = temp->next;
}
}
bool searchForMail(string email){
Node* temp = head;
while(temp != nullptr){
if(temp->mail == email){
return true;
}
temp = temp->next;
}
return false;
}
bool addMail(string email){
if(searchForMail(email)){
return false;
}
Node* newMailNode = new Node();
newMailNode->mail = email;
newMailNode->next = nullptr;
if(head == nullptr){
head = newMailNode;
tail = newMailNode;
}else{
tail->next = newMailNode;
tail = newMailNode;
}
return true;
}
};
int main() {
cout << "Hello, World!" << std::endl;
LinkedList linkedList;
linkedList.addMail("mail1");
linkedList.addMail("mail2");
linkedList.addMail("mail3");
linkedList.printAllMails();
bool isFound = linkedList.searchForMail("mail4");
cout<<isFound<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3QgTm9kZXsKICAgIHN0cmluZyBtYWlsOwogICAgTm9kZSogbmV4dDsKCn07CmNsYXNzIExpbmtlZExpc3R7CnB1YmxpYzoKICAgIE5vZGUqIGhlYWQ7CiAgICBOb2RlKiB0YWlsOwogICAgTGlua2VkTGlzdCgpewogICAgICAgIGhlYWQgPSBudWxscHRyOwogICAgICAgIHRhaWwgPSBudWxscHRyOwogICAgfQogICAgdm9pZCBwcmludEFsbE1haWxzKCl7CiAgICAgICAgTm9kZSogdGVtcCA9IGhlYWQ7CiAgICAgICAgd2hpbGUodGVtcCAhPSBudWxscHRyKXsKICAgICAgICAgICAgY291dCA8PCB0ZW1wLT5tYWlsIDw8IGVuZGw7CiAgICAgICAgICAgIHRlbXAgPSB0ZW1wLT5uZXh0OwogICAgICAgIH0KICAgIH0KICAgIGJvb2wgc2VhcmNoRm9yTWFpbChzdHJpbmcgZW1haWwpewogICAgICAgIE5vZGUqIHRlbXAgPSBoZWFkOwogICAgICAgIHdoaWxlKHRlbXAgIT0gbnVsbHB0cil7CiAgICAgICAgICAgIGlmKHRlbXAtPm1haWwgPT0gZW1haWwpewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGVtcCA9IHRlbXAtPm5leHQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGJvb2wgYWRkTWFpbChzdHJpbmcgZW1haWwpewogICAgICAgIGlmKHNlYXJjaEZvck1haWwoZW1haWwpKXsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBOb2RlKiBuZXdNYWlsTm9kZSA9IG5ldyBOb2RlKCk7CiAgICAgICAgbmV3TWFpbE5vZGUtPm1haWwgPSBlbWFpbDsKICAgICAgICBuZXdNYWlsTm9kZS0+bmV4dCA9IG51bGxwdHI7CiAgICAgICAgaWYoaGVhZCA9PSBudWxscHRyKXsKICAgICAgICAgICAgaGVhZCA9IG5ld01haWxOb2RlOwogICAgICAgICAgICB0YWlsID0gbmV3TWFpbE5vZGU7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIHRhaWwtPm5leHQgPSBuZXdNYWlsTm9kZTsKICAgICAgICAgICAgdGFpbCA9IG5ld01haWxOb2RlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfTsKaW50IG1haW4oKSB7CiAgICBjb3V0IDw8ICJIZWxsbywgV29ybGQhIiA8PCBzdGQ6OmVuZGw7CiAgICBMaW5rZWRMaXN0IGxpbmtlZExpc3Q7CiAgICBsaW5rZWRMaXN0LmFkZE1haWwoIm1haWwxIik7CiAgICBsaW5rZWRMaXN0LmFkZE1haWwoIm1haWwyIik7CiAgICBsaW5rZWRMaXN0LmFkZE1haWwoIm1haWwzIik7CiAgICBsaW5rZWRMaXN0LnByaW50QWxsTWFpbHMoKTsKICAgIGJvb2wgaXNGb3VuZCA9IGxpbmtlZExpc3Quc2VhcmNoRm9yTWFpbCgibWFpbDQiKTsKICAgIGNvdXQ8PGlzRm91bmQ8PGVuZGw7CiAgICByZXR1cm4gMDsKfQo=