```cpp #include <iostream> using namespace std; struct Node { int data; Node* next; }; // Tambah di depan void tambahDepan(Node*& head, int nilai) { Node* baru = new Node; baru->data = nilai; baru->next = head; head = baru; } // Tambah di belakang void tambahBelakang(Node*& head, int nilai) { Node* baru = new Node; baru->data = nilai; baru->next = NULL; if (head == NULL) { head = baru; return; } Node* bantu = head; while (bantu->next != NULL) { bantu = bantu->next; } bantu->next = baru; } // Hapus node berdasarkan nilai void hapusNode(Node*& head, int nilai) { if (head == NULL) { cout << "List kosong." << endl; return; } if (head->data == nilai) { Node* hapus = head; head = head->next; delete hapus; return; } Node* bantu = head; while (bantu->next != NULL && bantu->next->data != nilai) { bantu = bantu->next; } if (bantu->next == NULL) { cout << "Data tidak ditemukan." << endl; return; } Node* hapus = bantu->next; bantu->next = hapus->next; delete hapus; } // Cari nilai bool cariNode(Node* head, int nilai) { Node* bantu = head; while (bantu != NULL) { if (bantu->data == nilai) return true; bantu = bantu->next; } return false; } // Tampilkan isi list void tampilkan(Node* head) { if (head == NULL) { cout << "List kosong." << endl; return; } Node* bantu = head; while (bantu != NULL) { cout << bantu->data << " -> "; bantu = bantu->next; } cout << "NULL" << endl; } // Hapus seluruh list void hapusSemua(Node*& head) { while (head != NULL) { Node* hapus = head; head = head->next; delete hapus; } } int main() { Node* head = NULL; tambahDepan(head, 10); tambahDepan(head, 5); tambahBelakang(head, 20); tambahBelakang(head, 30); cout << "Isi list: "; tampilkan(head); hapusNode(head, 20); cout << "Setelah hapus 20: "; tampilkan(head); if (cariNode(head, 30)) cout << "30 ditemukan." << endl; else cout << "30 tidak ditemukan." << endl; hapusSemua(head); return 0; } ```