#include <iostream>
struct Node {
int data;
Node* next;
Node(int d){
data = d;
next = nullptr;
}
};
class LinkedList {
private:
Node* head;
public:
LinkedList(){
head = nullptr;
}
void insertHead(int d){
Node* node = new Node(d);
if(head == nullptr){
head = node;
}else{
node->next = head;
head = node;
}
}
void insert(int d){
Node* node = new Node(d);
if (head == nullptr){
head = node;
}else{
Node* temp = head->next;
while(temp != nullptr){//while(temp)
if (temp->next == nullptr){
temp->next = node;
return;
}else{
temp = temp->next;
}
}
head->next = node;
}
}
void print(){
if (head == nullptr){
std::cout << "Linked list is empty." << std::endl;
}else{
std::cout << head->data << std::endl;
Node* temp = head->next;
while(temp != nullptr){
std::cout << temp->data << std::endl;
temp = temp->next;
}
}
}
// yıkıcı method
//bu methodda program sonlandığında aldığımız belleği geri iade ediyoruz
//videoda hatırlayamadım ama sonra düşündüm sadece head silmek yeterli değil
//çünkü her yeni node için yeni bir bellek alanı istedik, Node* node = new Node(d);
//bu yüzden teker teker bütün düğümleri dolaşıp silmeliyiz
//kod aşağıdaki şekilde olacak
~LinkedList(){
//
Node* temp = head;
while(temp != nullptr){
Node* temp2 = temp;
//eğer tempi direk silseydik next elemana ulaşamazdık
//onun için ikinci bir geçici değişken (temp2) tutuyoruz
temp = temp->next;
delete temp2;
}
}
};
int main(){
LinkedList lst;
lst.insert(5);
lst.insert(10);
lst.insert(15);
lst.insertHead(25);
lst.print();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IE5vZGUgewogICAgaW50IGRhdGE7CiAgICBOb2RlKiBuZXh0OwogICAgTm9kZShpbnQgZCl7CiAgICAgICAgZGF0YSA9IGQ7CiAgICAgICAgbmV4dCA9IG51bGxwdHI7CiAgICB9Cn07CgpjbGFzcyBMaW5rZWRMaXN0IHsKICAgIHByaXZhdGU6CiAgICAgICAgTm9kZSogaGVhZDsKCiAgICBwdWJsaWM6CiAgICAgICAgTGlua2VkTGlzdCgpewogICAgICAgICAgICBoZWFkID0gbnVsbHB0cjsKICAgICAgICB9CgogICAgICAgIHZvaWQgaW5zZXJ0SGVhZChpbnQgZCl7CiAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBuZXcgTm9kZShkKTsKICAgICAgICAgICAgaWYoaGVhZCA9PSBudWxscHRyKXsKICAgICAgICAgICAgICAgIGhlYWQgPSBub2RlOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIG5vZGUtPm5leHQgPSBoZWFkOwogICAgICAgICAgICAgICAgaGVhZCA9IG5vZGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZvaWQgaW5zZXJ0KGludCBkKXsKICAgICAgICAgICAgTm9kZSogbm9kZSA9IG5ldyBOb2RlKGQpOwogICAgICAgICAgICBpZiAoaGVhZCA9PSBudWxscHRyKXsKICAgICAgICAgICAgICAgIGhlYWQgPSBub2RlOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIE5vZGUqIHRlbXAgPSBoZWFkLT5uZXh0OwogICAgICAgICAgICAgICAgd2hpbGUodGVtcCAhPSBudWxscHRyKXsvL3doaWxlKHRlbXApCiAgICAgICAgICAgICAgICAgaWYgKHRlbXAtPm5leHQgPT0gbnVsbHB0cil7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAtPm5leHQgPSBub2RlOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSB0ZW1wLT5uZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhlYWQtPm5leHQgPSBub2RlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZvaWQgcHJpbnQoKXsKICAgICAgICAgICAgaWYgKGhlYWQgPT0gbnVsbHB0cil7CiAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIkxpbmtlZCBsaXN0IGlzIGVtcHR5LiIgPDwgc3RkOjplbmRsOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBoZWFkLT5kYXRhIDw8IHN0ZDo6ZW5kbDsKICAgICAgICAgICAgICAgIE5vZGUqIHRlbXAgPSBoZWFkLT5uZXh0OwogICAgICAgICAgICAgICAgd2hpbGUodGVtcCAhPSBudWxscHRyKXsKICAgICAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgdGVtcC0+ZGF0YSA8PCBzdGQ6OmVuZGw7CiAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHRlbXAtPm5leHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIHnEsWvEsWPEsSBtZXRob2QKICAgICAgICAvL2J1IG1ldGhvZGRhIHByb2dyYW0gc29ubGFuZMSxxJ/EsW5kYSBhbGTEscSfxLFtxLF6IGJlbGxlxJ9pIGdlcmkgaWFkZSBlZGl5b3J1egogICAgICAgIC8vdmlkZW9kYSBoYXTEsXJsYXlhbWFkxLFtIGFtYSBzb25yYSBkw7zFn8O8bmTDvG0gc2FkZWNlIGhlYWQgc2lsbWVrIHlldGVybGkgZGXEn2lsCiAgICAgICAgLy/Dp8O8bmvDvCBoZXIgeWVuaSBub2RlIGnDp2luIHllbmkgYmlyIGJlbGxlayBhbGFuxLEgaXN0ZWRpaywgTm9kZSogbm9kZSA9IG5ldyBOb2RlKGQpOwogICAgICAgIC8vYnUgecO8emRlbiB0ZWtlciB0ZWtlciBiw7x0w7xuIGTDvMSfw7xtbGVyaSBkb2xhxZ/EsXAgc2lsbWVsaXlpegogICAgICAgIC8va29kIGHFn2HEn8SxZGFraSDFn2VraWxkZSBvbGFjYWsKICAgICAgICB+TGlua2VkTGlzdCgpewogICAgICAgICAgICAvLwogICAgICAgICAgICBOb2RlKiB0ZW1wID0gaGVhZDsKICAgICAgICAgICAgd2hpbGUodGVtcCAhPSBudWxscHRyKXsKICAgICAgICAgICAgICAgIE5vZGUqIHRlbXAyID0gdGVtcDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy9lxJ9lciB0ZW1waSBkaXJlayBzaWxzZXlkaWsgbmV4dCBlbGVtYW5hIHVsYcWfYW1hemTEsWsKICAgICAgICAgICAgICAgIC8vb251biBpw6dpbiBpa2luY2kgYmlyIGdlw6dpY2kgZGXEn2nFn2tlbiAodGVtcDIpIHR1dHV5b3J1egogICAgICAgICAgICAgICAgdGVtcCA9IHRlbXAtPm5leHQ7CiAgICAgICAgICAgICAgICBkZWxldGUgdGVtcDI7CgogICAgICAgICAgICB9CiAgICAgICAgfQp9OwoKaW50IG1haW4oKXsKICAgIExpbmtlZExpc3QgbHN0OwogICAgbHN0Lmluc2VydCg1KTsKICAgIGxzdC5pbnNlcnQoMTApOwogICAgbHN0Lmluc2VydCgxNSk7CiAgICBsc3QuaW5zZXJ0SGVhZCgyNSk7CiAgICBsc3QucHJpbnQoKTsKICAgIHJldHVybiAwOwoKfQogICAgICAgICAgICAgICAg