Untitled
unknown
c_cpp
2 years ago
4.5 kB
9
Indexable
#include <iostream>
using namespace std;
/// PROGRAM SINGLE LINKED LIST CIRCULAR
// 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