Untitled
Anonymous
c_cpp
03/28/2024 3:22 AM
6.3 KB
31
Indexable
#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;
}Editor is loading...
Leave a Comment