Untitled
unknown
c_cpp
6 months ago
4.8 kB
5
Indexable
Never
#include <iostream> using namespace std; // Deklarasi Struct Node struct Node { int data; Node *next; }; Node *head; Node *tail; // Inisialisasi Node void init() { head = NULL; tail = NULL; } // Pengecekan apakah list kosong bool isEmpty() { return (head == NULL); } // Tambah Node di depan void insertDepan(int nilai) { Node *baru = new Node; baru->data = nilai; baru->next = NULL; if (isEmpty()) { head = tail = baru; } else { baru->next = head; head = baru; } } // Tambah Node di belakang void insertBelakang(int nilai) { Node *baru = new Node; baru->data = nilai; baru->next = NULL; if (isEmpty()) { head = tail = baru; } else { tail->next = baru; tail = baru; } } // Hitung jumlah Node dalam list int hitungList() { Node *hitung = head; int jumlah = 0; while (hitung != NULL) { jumlah++; hitung = hitung->next; } return jumlah; } // Tambah Node di posisi tengah void insertTengah(int data, int posisi) { if (posisi < 1 || posisi > hitungList()) { cout << "Posisi diluar jangkauan" << endl; } else if (posisi == 1) { cout << "Posisi bukan posisi tengah" << endl; } else { Node *baru = new Node(); baru->data = data; Node *bantu = head; for (int i = 1; i < posisi - 1; i++) { bantu = bantu->next; } baru->next = bantu->next; bantu->next = baru; } } // Hapus Node di depan void hapusDepan() { if (!isEmpty()) { Node *hapus = head; if (head->next != NULL) { head = head->next; } else { head = tail = NULL; } delete hapus; } else { cout << "List kosong!" << endl; } } // Hapus Node di belakang void hapusBelakang() { if (!isEmpty()) { Node *hapus = tail; if (head != tail) { Node *bantu = head; while (bantu->next != tail) { bantu = bantu->next; } tail = bantu; tail->next = NULL; } else { head = tail = NULL; } delete hapus; } else { cout << "List kosong!" << endl; } } // Hapus Node di posisi tengah void hapusTengah(int posisi) { if (posisi < 1 || posisi > hitungList()) { cout << "Posisi diluar jangkauan" << endl; } else if (posisi == 1) { cout << "Posisi bukan posisi tengah" << endl; } else { Node *bantu = head; for (int i = 1; i < posisi - 1; i++) { bantu = bantu->next; } Node *hapus = bantu->next; bantu->next = hapus->next; delete hapus; } } // Ubah data Node di depan void ubahDepan(int data) { if (!isEmpty()) { head->data = data; } else { cout << "List masih kosong!" << endl; } } // Ubah data Node di posisi tengah void ubahTengah(int data, int posisi) { if (!isEmpty()) { if (posisi < 1 || posisi > hitungList()) { cout << "Posisi di luar jangkauan" << endl; } else if (posisi == 1) { cout << "Posisi bukan posisi tengah" << endl; } else { Node *bantu = head; for (int i = 1; i < posisi; i++) { bantu = bantu->next; } bantu->data = data; } } else { cout << "List masih kosong!" << endl; } } // Ubah data Node di belakang void ubahBelakang(int data) { if (!isEmpty()) { tail->data = data; } else { cout << "List masih kosong!" << endl; } } // Hapus semua Node dalam list void clearList() { Node *bantu = head; while (bantu != NULL) { Node *hapus = bantu; bantu = bantu->next; delete hapus; } head = tail = NULL; cout << "List berhasil terhapus!" << endl; } // Tampilkan isi list void tampil() { if (!isEmpty()) { Node *bantu = head; while (bantu != NULL) { cout << bantu->data << " "; bantu = bantu->next; } cout << endl; } else { cout << "List masih kosong!" << endl; } } int main() { init(); insertDepan(3); tampil(); insertBelakang(5); tampil(); insertDepan(2); tampil(); insertDepan(1); tampil(); hapusDepan(); tampil(); hapusBelakang(); tampil(); insertTengah(7, 2); tampil(); hapusTengah(2); tampil(); ubahDepan(1); tampil(); ubahBelakang(8); tampil(); ubahTengah(11, 2); tampil(); return 0; }
Leave a Comment