PROGRAM LINKED LIST C++ BUAT, HAPUS, EDIT, CARI, TAMBAH ...





Linked List adalah koleksi linear dari data data - data, yang disebut dengan node, yang dimana setiap node akan menunjuk kepada node yang lain melalui sebuah variabel pointer. Linked List dapat didefinisikan juga sebagai kumpulan node yang merepresentasikan sequence.

Perlu diketahui bahwa Sebuah linked list yang hanya memiliki 1 penghubung ke node lain disebut sebagai single linked list. Selain itu, di dalam sebuah linked list, ada 1 variabel pointer yang menjadi gambaran besar dari linked list, yakni pointer HEAD yang menunjuk kepada node pertama yang ada di dalam linked list itu.

Juga untuk sebuah linked list di katakan kosong apabila isi pointer pada head adalah NULL ( kosong ).

Operasi 0 operasi yang biasanya terdapat di dalam sebuah linked list adalah:
  • Push
Push adalahsebuah operasi insert ( memasukkan ) dimana di dalam linked list terdapat 2 kemungkinan insert, yaitu insert melalui depan ( masukkan bagian depan) atau juga belakang ( masukkan bagian belakang). Operasi Masukkan bagian depan berarti data yang paling baru dimasukkan akan berada di depan data yang lain , dan sebaliknya Masukkan data bagian belakang berarti data yang paling baru akan berada tapat di belakang data yang lain.

Ilustrasinya adalah sebagai berikut :

push bagian Depan: 6, 3, 8, 10 maka hasilnya adalah: 10 - >8 - >3 - > 6 - > NULL ( kosong )
push bagian Belakang: 6, 3, 8, 10 maka hasilnya adalah: 6 - >3 -8 - >10 - > NULL
  • Pop
Pop merupakan kebalikan dari push. Pop merupakan operasi delete, dimana di dalam linked list itu memiliki 2 kemungkinan untuk di delete, yaitu melalui depan (pop bagian Depan) dan melalui belakang (pop bagian Belakang). Pop bagian depan berarti data yang akan dihapus adalah data paling depan, dan pop bagian Belakang kebalikan dari Pop bagian depan yaitu data yang akan dihapus adalah data paling belakang (akhir).

Dalam penerapan kode single linked list, umumnya adalah hanya digunakan pointer head sebagai variabel pointer yang menunjuk kepada linked list. Terdapan 1 pointer tambahan dalam menyusunnya , yaitu TAIL ( ekor / last ) untuk menunjuk data yang terakhir di dalam linked list.


#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>

using namespace std;

int pil;
void pilih();
void buat_baru();
void tambah_belakang();
void tambah_depan();
void tambah_setelah();
void hapus_depan();
void hapus_belakang();
void hapus_setelah();
void penukaran();
void cari();
void edit();
void tampil();

struct simpul{
char nim[8], nama[80];
int umur;
struct simpul *next;
}mhs, *baru, *awal=NULL, *akhir=NULL, *hapus, *bantu, *tukar, *tukar1;

void clrscr(){
system("cls");
}

int main(){
do {
cout<<"MENU SINGLE LINKEDLIST"<<endl;
cout<<"1. Tambah Depan"<<endl;
cout<<"2. Tambah Belakang"<<endl;
cout<<"3. Hapus Depan"<<endl;
cout<<"4. Hapus Belakang"<<endl;
cout<<"5. Tampil"<<endl;
cout<<"6. Cari"<<endl;
cout<<"7. Tambah Setelah"<<endl;
cout<<"8. Hapus Setelah"<<endl;
cout<<"9. Edit "<<endl;
cout<<"10. Penukaran"<<endl;
cout<<"12. Exit"<<endl;
cin>>pil;
pilih();
} while (pil!=12);
return 0;
}

void pilih(){
if (pil==1){
tambah_depan();
} else
if (pil==2){
tambah_belakang();
} else
if (pil==3){
hapus_depan();
} else
if (pil==4){
hapus_belakang();
} else
if (pil==5){
tampil();
} else
if (pil==6){
cari();
} else
if (pil==7){
tambah_setelah();
} else
if (pil==8){
hapus_setelah();
} else
if (pil==9){
edit();
} else
if (pil==10){
penukaran();
}
}

void buat_baru(){
baru=(simpul*)malloc(sizeof(struct simpul));
cout<<"Input Nim : ";
cin>> baru->nim;
cout<<"input Nama : ";
cin>> baru->nama;
cout<<"Input Umur : ";
cin>> baru->umur;
baru->next=NULL;
}

void penukaran(){
char wadah[80], wadah1[80];
cout<<"Masukkan Data yang akan ditukar \t : ";
cin>>wadah;
cout<<"Masukkan Data yang akan ditukar \t : ";
cin>>wadah1;
tukar=awal;
while (tukar!=NULL){
bantu->next=tukar->next;
if (strcmp(tukar->nama, wadah)==0){
tukar1 = awal;
while (tukar1!=NULL){
if(strcmp(tukar1->nama, wadah1)==0){
bantu->next=tukar->next;
tukar->next=tukar1->next;
tukar1->next=tukar;
break;
}
tukar1=tukar1->next;
}
break;
}
tukar=tukar->next;
}
clrscr();
}

void edit(){
char wadah[80];
cout<<"Masukkan Data yang akan diedit \t : ";
cin>>wadah;
bantu=awal;
while (bantu!=NULL){
if (strcmp(bantu->nama, wadah)==0){
cout<<"==================="<<endl;
cout<<"NIM \t : ";
cin>>bantu->nim;
cout<<"Nama \t : ";
cin>>bantu->nama;
cout<<"Umur \t : ";
cin>>bantu->umur;
break;
}
bantu=bantu->next;
}
}

void tambah_depan(){
buat_baru();
if (awal==NULL){
awal=baru;
akhir=baru;
akhir->next=NULL;
}
else {
baru->next = awal;
awal=baru;
}
cout<<endl<<endl;
clrscr();
}

void tampil(){
if (awal==NULL){
cout<<"Kosong"<<endl;
}
else {
bantu=awal;
while (bantu!=NULL){
cout<<"==================="<<endl;
cout<<"NIM \t : "<<bantu->nim<<endl;
cout<<"Nama \t : "<<bantu->nama<<endl;
cout<<"Umur \t : "<<bantu->umur<<endl;
bantu=bantu->next;
}
}
}

void hapus_depan(){
if (awal==NULL){
cout<<"Kosong"<<endl;
}
else {
hapus = awal;
awal= awal->next;
free(hapus);
}
cout<<endl<<endl;
clrscr();
}

void cari(){
char wadah[80];
cout<<"Masukkan Data yang dicari \t : ";
cin>>wadah;
bantu=awal;
while (bantu!=NULL){
if (strcmp(bantu->nama, wadah)==0){
cout<<"==================="<<endl;
cout<<"NIM \t : "<<bantu->nim<<endl;
cout<<"Nama \t : "<<bantu->nama<<endl;
cout<<"Umur \t : "<<bantu->umur<<endl;
}
bantu=bantu->next;
}
}

void tambah_belakang(){
buat_baru();
if (awal==NULL){
awal=baru;
}
else {
akhir->next=baru;
}
akhir=baru;
clrscr();
}

void hapus_belakang(){
if (awal==NULL){
cout<<"Kosong"<<endl;
} else if (awal==akhir){
hapus= awal;
awal=awal->next;
free(hapus);
}else {
bantu=awal;
hapus=bantu->next;
while (hapus!=NULL){
if (hapus->next==NULL){
akhir = bantu;
bantu->next=NULL;
free(hapus);
break;
}
hapus=bantu->next;
}
}
}


void tambah_setelah(){
char wadah[80];
if (awal==NULL){
cout<<"Kosong"<<endl;
} else {
cout<<"Masukkan Nama yg akan disisipkan setelahnya : ";
cin>>wadah;
bantu=awal;
while (bantu!=NULL){
if (strcmp(bantu->nama, wadah)==0){
buat_baru();
baru->next=bantu->next;
bantu->next=baru;
break;
}
bantu=bantu->next;
}
}
cout<<endl<<endl;
clrscr();
}

void hapus_setelah(){
char wadah[80];
if (awal==NULL){
cout<<"Kosong"<<endl;
} else {
cout<<"Masukkan Nama yg akan dihapus setelahnya : ";
cin>>wadah;
bantu=awal;
while (bantu!=NULL){
if (strcmp(bantu->nama, wadah)==0){
hapus=bantu->next;
bantu->next=hapus->next;
free(hapus);
break;
}
bantu=bantu->next;
}
}
cout<<endl<<endl;
clrscr();
}

PENJELASAN :
  • Seperti yang kalian ketahui , sub program dari listing ini ada :
               void pilih();
               void buat_baru();
               void tambah_belakang();
               void tambah_depan();
               void tambah_setelah();
               void hapus_depan();
               void hapus_belakang();
               void hapus_setelah();
               void penukaran();
               void cari();
               void edit();
               void tampil();

Kalian harus memahami setiap isi kode dari sub program tersebut. Selain itu , yang sangat penting adalah
  • Pendeklarasian struct dalam struct ini adalah ciri khas dari linked list yang membuat program menjadi fleksibel dan dinamis .
struct simpul{
char nim[8], nama[80];
int umur;
struct simpul *next;
}mhs, *baru, *awal=NULL, *akhir=NULL, *hapus, *bantu, *tukar, *tukar1;


dimana :
nama structnya adalah simpul. Dengan fieldbertipe integer dan juga char . Lalu terdapat struct simpul dengan *next;

Untuk variabelnya sendiri yaitu mhs , *baru , *awal=NULL (kosong) , *akhir=NULL ( bagian akhirnya kosong ), *hapus, *bantu, *tukar, dan juga *tukar1.



Subscribe to receive free email updates:

0 Response to "PROGRAM LINKED LIST C++ BUAT, HAPUS, EDIT, CARI, TAMBAH ..."

Post a Comment