Untitled
unknown
c_cpp
2 years ago
4.4 kB
9
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