Untitled
unknown
c_cpp
a year ago
4.4 kB
7
Indexable
#include <iostream> using namespace std; // Deklarasi Struct Node struct Node { string data; Node *next; }; Node *head, *tail, *baru, *bantu, *hapus; void init() { head = NULL; tail = head; } // Pengecekan int isEmpty() { if (head == NULL) return 1; // true else return 0; // false } // Buat Node Baru void buatNode(string data) { baru = new Node; baru->data = data; baru->next = NULL; } // Hitung List int hitungList() { bantu = head; int jumlah = 0; while (bantu != NULL) { jumlah++; bantu = bantu->next; } return jumlah; } // Tambah Depan void insertDepan(string data) { // Buat Node baru buatNode(data); if (isEmpty() == 1) { head = baru; tail = head; baru->next = head; } else { while (tail->next != head) { tail = tail->next; } baru->next = head; head = baru; tail->next = head; } } // Tambah Belakang void insertBelakang(string data) { // Buat Node baru buatNode(data); if (isEmpty() == 1) { head = baru; tail = head; baru->next = head; } else { while (tail->next != head) { tail = tail->next; } tail->next = baru; baru->next = head; } } // Tambah Tengah void insertTengah(string data, int posisi) { if (isEmpty() == 1) { head = baru; tail = head; baru->next = head; } else { baru->data = data; // transversing int nomor = 1; bantu = head; while (nomor < posisi - 1) { bantu = bantu->next; nomor++; } baru->next = bantu->next; bantu->next = baru; } } // Hapus Depan void hapusDepan() { if (isEmpty() == 0) { hapus = head; tail = head; if (hapus->next == head) { head = NULL; tail = NULL; } else { delete hapus; while (tail->next != hapus) { tail = tail->next; } head = head->next; tail->next = head; hapus->next = NULL; delete hapus; } } else { cout << "List masih kosong!" << endl; } } // Hapus Belakang void hapusBelakang() { if (isEmpty() == 0) { hapus = head; tail = head; if (hapus->next == head) { head = NULL; tail = NULL; } else { delete hapus; while (hapus->next != head) { hapus = hapus->next; } while (tail->next != hapus) { tail = tail->next; } tail->next = head; hapus->next = NULL; delete hapus; } } else { cout << "List masih kosong!" << endl; } } // Hapus Tengah void hapusTengah(int posisi) { if (isEmpty() == 0) { // transversing int nomor = 1; bantu = head; while (nomor < posisi - 1) { bantu = bantu->next; nomor++; } hapus = bantu->next; bantu->next = hapus->next; delete hapus; } else { cout << "List masih kosong!" << endl; } } // Hapus List void clearList() { if (head != NULL) { hapus = head->next; while (hapus != head) { bantu = hapus->next; delete hapus; hapus = bantu; } delete head; head = NULL; } cout << "List berhasil terhapus!" << endl; } // Tampilkan List void tampil() { if (isEmpty() == 0) { tail = head; do { cout << tail->data << ends; tail = tail->next; } while (tail != head); cout << endl; } else { cout << "List masih kosong!" << endl; } } int main() { init(); insertDepan("Ayam"); tampil(); insertDepan("Bebek"); tampil(); insertBelakang("Cicak"); tampil(); insertBelakang("Domba"); tampil(); hapusBelakang(); tampil(); hapusDepan(); tampil(); insertTengah("Sapi", 2); tampil(); hapusTengah(2); tampil(); return 0; }
Editor is loading...
Leave a Comment