Last active
April 1, 2021 13:13
-
-
Save uluumbch/7fc507ecffdc0a8a94b3eead43236831 to your computer and use it in GitHub Desktop.
Contoh Program SLLNC pada cpp/c++ dengan fungsi Hapus pada bagian depan, Hapus belakang,
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <conio.h> | |
using namespace std; | |
struct node | |
{ | |
int data; | |
node *next; | |
}; | |
node *head; | |
node *tail; | |
node *curr; | |
node *entry; | |
node *del; | |
void inisialisasi() | |
{ | |
head = NULL; | |
tail = NULL; | |
} | |
void input(int dt) | |
{ | |
entry = (node *)malloc(sizeof(node)); | |
entry->data = dt; | |
entry->next = NULL; | |
if (head == NULL) | |
{ | |
head = entry; | |
tail = head; | |
} | |
else | |
{ | |
tail->next = entry; | |
tail = entry; | |
} | |
} | |
int isEmpty() | |
{ | |
if (head == NULL) | |
{ | |
return 1; | |
} | |
else | |
{ | |
return 0; | |
} | |
} | |
void hapusDepan() | |
{ | |
int simpan; | |
if (isEmpty() == 1) | |
{ | |
cout << "\nData masih kosong" << endl; | |
} | |
else | |
{ | |
simpan = head->data; | |
del = head; | |
head = head->next; | |
delete del; | |
cout << "\ndata yang dihapus adalah " << simpan << endl; | |
} | |
} | |
void hapusBelakang() | |
{ | |
node *bantu, *hapus; | |
int simpan; | |
if (isEmpty() == 0) | |
{ | |
bantu = head; | |
if (head != tail) | |
{ | |
while (bantu->next != tail) | |
{ | |
bantu = bantu->next; | |
} | |
hapus = tail; | |
tail = bantu; | |
simpan = hapus->data; | |
delete hapus; | |
tail->next = NULL; | |
} | |
else | |
{ | |
simpan = tail->data; | |
head = tail = NULL; | |
} | |
cout << "\ndata yang dihapus adalah " << simpan << endl; | |
} | |
else | |
cout << "Data Masih kosong\n"; | |
} | |
void clear() | |
{ | |
node *bantu, *hapus; | |
bantu = head; | |
while (bantu != NULL) | |
{ | |
hapus = bantu; | |
bantu = bantu->next; | |
delete hapus; | |
} | |
head = NULL; | |
tail = NULL; | |
cout << "Semua Data Berhasil dihapus" << endl; | |
} | |
void cetak() | |
{ | |
curr = head; | |
if (head == NULL) | |
cout << "\ntidak ada data dalam linked list" << endl; | |
else | |
{ | |
cout << "\nData yang ada dalam linked list adalah" << endl; | |
while (curr != NULL) | |
{ | |
cout << curr->data << "-"; | |
curr = curr->next; | |
} | |
cout << "NULL"; | |
cout << endl; | |
} | |
} | |
void menu() | |
{ | |
int pilih; | |
int data; | |
do | |
{ | |
cout << "SINGLE LINKED LIST NON CIRCULAR" << endl; | |
cout << "---------Bachrul Uluum---------" << endl; | |
cout << "-------------------------------" << endl; | |
cout << "Menu : " << endl; | |
cout << "1. Input data" << endl; | |
cout << "2. Cetak Data" << endl; | |
cout << "3. Hapus Data Bagian Depan" << endl; | |
cout << "4. Hapus Data Bagian Belakang" << endl; | |
cout << "5. Hapus Semua Data " << endl; | |
cout << "6. Exit" << endl; | |
cout << "Masukkan pilihan Anda : "; | |
cin >> pilih; | |
switch (pilih) | |
{ | |
case 1: | |
cout << "\nMasukkan data : "; | |
cin >> data; | |
input(data); | |
break; | |
case 2: | |
cetak(); | |
break; | |
case 3: | |
hapusDepan(); | |
break; | |
case 4: | |
hapusBelakang(); | |
break; | |
case 5: | |
int pilih; | |
cout << "Apakah Anda yakin ingin menghapus semua data yang ada?" << endl; | |
cout << "Pilih 1 untuk ya | pilih 0 untuk tidak" << endl; | |
cin >> pilih; | |
if (pilih == 1) | |
{ | |
clear(); | |
break; | |
} | |
else | |
{ | |
break; | |
} | |
default: | |
cout << "\nTerimakasih :)" << endl; | |
} | |
cout << "Press any key to continue..." << endl; | |
getch(); | |
system("cls"); | |
} while (pilih < 6); | |
} | |
int main() | |
{ | |
inisialisasi(); | |
menu(); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment