Masih ada hubungannya dengan materi Pointer sebelumnya, karena linked list ini menggunakan fungsi pointer untuk penunjuk node pada node selanjutnya. Lalu, sebenarnya menggunakan apa node tersebut dibuat? Node tersebut dibuat dengan menggunakan minimal 2 field struct, yaitu field untuk datanya, dan field untuk tipe data yang bertipa pointer yang akan digunakan untuk menunjukan node selanjutnya.
Pada linked list, terdapat dua tipe, yaitu Single Linked List, dan juga Double Linked List. Namun, tipe linked list yang paling sederhana adalah tipe Single Linked List, yaitu seperti yang akan di bahas pada postingan kali ini.
Sedangkan single linked list juga dibagi lagi menjadi 2 macam bentuk yang berbeda, yaitu single linked list non circurlar dan single linked list circular. Pengertian dari Non Circular Linked List adalah senarai berantai yang terdapat pointer akhir untuk selalu menunjuk NULL sebagai pertanda data terakhir di dalam list.
Baiklah, setelah memahami pengertian dari linked list, khususnya single linked list seperti tersebut di atas, maka langkah selanjutnya adalah memahami bagaiamana flowchart yang terjadi pada proses pembuatan pemrograman linked list. Karena, linked list ini sendiri sering digunakan pada pemrograman kecerdasan buatan.
- Mendeklarasikan struct node
- Membuat node head
- Menginisialisai node head
- Menambah node baru (dapat di depan maupun di belakang).
- Menghapus node
Seperti pada flowchart di atas, maka dapat dibuatlah sebuah contoh program C++ Linked List seperti pada gambar berikut ini menggunakan syntax yang ada pada bawah gambar. Silahkan simak baik-baik syntax program ini.
Output Single Linked List pada C++ Beserta Contoh Programnya |
/*--------------------
Program Design By
URL: Lusdyana.blogspot.com
Name: Lusiana Haryanti
---------------------*/
#include <conio.h>
#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <string.h>
using namespace std;
typedef struct TNode { //Proses pembuatan deklarasi single linked list non circular
int data; //deklarasi "data" menggunakan tipe data integer
TNode *next; //deklarasi penunjuk (pointer) dengan selanjutnya (*Next)
};
TNode *head; //deklarasi head sebagai pointer utama
void init(){ //inisialisasi linked list non circulat
head=NULL; //memberikan nilai kepada head, yaitu NULL
}
int periksaKosong(){ //mengecek kekosongan data pada program
if(head==NULL) // jika headnya null maka program akan mereturn 1
return 1;
else
return 0; // jika ternyata headnya tidak Null, maka program akan mereturn 0
}
void masukDepan(int n){ //menambahkan data lagi pada awal list program
TNode *lagi; //deklarasi TNode untuk digunakan menjadi pointer lagi
lagi=new TNode; //memberikan nilai pada lagi, yaitu TNode lagi (data lagi)
lagi->data=n; //memberikan nilai pada pointer lagi, yaitu data yang berisi variabel n
lagi->next=NULL; // memberikan nilai pada pointer lagi, yaitu pointer next yang berisi Null
if(periksaKosong()==1){ //memeriksa kekosongan data, jika iya maka program akanberjalan seperti tadi
head=lagi;
head->next=NULL;
}
else {
lagi->next=head;
head=lagi;
}
cout<<"Data Terisi";
}
void masukBelakang(int n){ //menambahkan data lagi pada akhir list program
TNode *lagi,*help; //Pointer yang digunakan yaitu lagi dan help
lagi=new TNode;
lagi->data=n;
lagi->next=NULL;
if(periksaKosong()==1){
head=lagi;
head->next=NULL;
}
else {
help=head;
while(help->next!=NULL){
help=help->next;
}
help->next=lagi;
}
cout<<"Data Terisi";
}
void tampil(){ //Fungsi untuk menampilkan linked list yang telah di input / di delete
TNode *help; //pointer yang digunakan yaitu help
help=head; // Nilai help= Nilai yang ada di head
if(periksaKosong()==0){ // periksa apakah return 0(bernilai)
while(help!=NULL){ //Selama help tidak sama dengan NULL, maka di eksekusi
cout<<help->data<<endl; // tampilkan di monitor nilai help->data
help=help->next; //Nilai help= nilai help selanjutnya
}
}
else
cout<<"Masih Kosong"<<endl;
}
void bersihiDepan(){ //Fungsi untuk menghapus Nilai paling depan
TNode *hapus;
int d;
if(periksaKosong()==0){ //periksa apakah return 0(ada nilai)
if(head!=NULL){ // jika head tidak sama dengan Null maka :
hapus=head; // pointer hapus= head
d=hapus->data; //nilai dari d = nilai dari hapus->data
head=hapus->next; // Nilai head sekarang berisi nilai hapus->next
delete hapus; //fungsi untuk menghapus nilai yang ada di pointer hapus
}
cout<<d<<"Terhapus"<<endl;
}
else
cout<<"Masih Kosong"<<endl;
}
main(){ // Fungsi Utama dari program
int pil;
do{
system("CLS");
int n;
cout<<"1.Masukkan Data di Depan"<<endl;
cout<<"2.Masukkan Data di Belakang"<<endl;
cout<<"3.Tunjukkan Datanya"<<endl;
cout<<"4.Hapus Datanya"<<endl;
cout<<"5.Keluar dari Program"<<endl;
cout<<"Masukan Pilihan Anda :";pil=getche();
switch(pil){
case'1': system("CLS");
cout<<"Masukan data :";cin>>n;
periksaKosong();
masukDepan(n);
break;
case'2': system("CLS");
cout<<"Masukan data :";cin>>n;
periksaKosong();
masukBelakang(n);
break;
case'3': system("CLS");
periksaKosong();
tampil();
break;
case'4': system("CLS");
periksaKosong();
bersihiDepan();
break;
}
getch();
}while(pil!='5');
return 0;
}
Setelah Anda memahami mengenai Single Linked List pada C++ Beserta Contoh Programnya, silahkan untuk bagikan postingan ini kepada teman-teman Anda, agar ilmu yang kita dapat tidak terbuang sia-sia. Terimakasih.
Flow chart nya langsung pake gambar keknya bagus...
BalasHapuskunjungin balik ya...
http://timeborneo.blogspot.com/
Terimakasih masukannya mas, secepatnya nanti Saya coba cari tools yang bisa bikin flowchart ga ribet
Hapussecepatnya nanti akan Saya kunjungi
thanks gan.heheeh
BalasHapusSama-sama gan (y)
Hapusijin sedot gan:)
BalasHapusSiap gan....!!
Hapusizin pelajarin codingnya mba buat ujian...
BalasHapussiap, semangat terus belajarnya
HapusXCODEPLUS - The Best Resource to Learn to Code
BalasHapusC++ & C# Tutorials and more...
http://www.xcodeplus.net/
1 bulan bisa dapet minimal 3 dollar!! >> http://belajarbarengz.blogspot.co.id/2017/06/cara-mudah-memperoleh-dollar-dengan.html?m=1
BalasHapus