LINKED LIST DALAM BAHASA C++
Linked list adalah sekumpulan elemen
bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya
terdiri dari dua bagian linked list juga merupakan suatu cara untuk menyimpan
data dengan struktur sehingga dapat secara otomatis menciptakan suatu tempat
baru untuk menyimpan data yang diperlukan. Struktur ini lebih dinamis karena
banyaknya elemen dengan mudah ditambah atau dikurangi, berbeda dengan array
yang ukurannya tetap.
1. Single
Linked List
Single Linked
List Circular (SLLC) adalah Single Linked List yang pointer nextnya menunjuk
pada dirinya sendiri. Jika Single Linked List tersebut terdiri dari beberapa
node, maka pointer next pada node terakhir akan menunjuk ke node terdepannya.
a. LIFO (Last In First Out), aplikasinya : Stack (Tumpukan)
Suatu
metode pembuatan Linked List di mana data yang masuk paling akhir adalah data
yang keluar paling awal. Hal ini dapat di analogikan (dalam kehidupan
sehari-hari) dengan saat Anda menumpuk barang seperti digambarkan dibawah ini.
Pembuatan sebuah simpul dalam suatu linked list seperti digambarkan dibawah ii,
disebutkan istilah INSERT, Jika linked list dibuat dengan metode LIFO, terjadi
penambahan / Insert simpul di belakang.
b. FIFO (First In First Out), aplikasinya : Queue (Antrean)
Suatu
metode pembuatan Linked List di mana data yang masuk paling awal adalah data
yang keluar paling awal juga. Hal ini dapat di analogikan (dalam kehidupan
sehari-hari), misalnya saat sekelompok orang yang datang (ENQUEUE) mengantri
hendak membeli tiket di loket. Jika linked list dibuat dengan metode FIFO,
terjadi penambahan / Insert simpul didepan.
2. Double
Linked List
Double
Linked List adalah elemen-elemen yang dihubungkan dengan dua pointer dalam satu
elemen dan list dapat melintas baik di depan atau belakang. Elemen double link
list terdiri dari tiga bagian:
a. Bagian data informasi
b. Pointer next yang menunjuk ke elemen
berikutnya
c. Pointer
prev yang menunjuk ke elemen sebelumnya
contoh program saya buat
#include
<iostream>
#include
<conio.h>
#include<string.h>
using
namespace std;
int
pil;
struct
node
{
char nama [20], asal [20], umur [10];
node *prev, *next;
};
node
*baru, *head=NULL, *tail=NULL,*hapus,*current = NULL;
void
buat_baru()
{
baru = new(node);
system("cls");
cout<<" Pilihan pertama yaitu input data\n\n";
cout<<"input nama :
";cin>>baru->nama;
cout<<"input asal :
";cin>>baru->asal;
cout<<"input umur :
";cin>>baru->umur;
baru->prev=NULL;
baru->next=NULL;
}
void
tampil()
{
if (head==NULL)
cout<<"Kosong";
else
{
current=head;
while(current!=NULL)
{
cout<<"\n Data Pengunjung Museum \n"<<endl;
cout<<" nama : "<<current->nama;
cout<<"\n asal : "<<current->asal;
cout<<"\n umur : "<<current->umur;
cout<<"\n";
current=current->next;
}
}
getch();
}
void
tambah_belakang()
{
buat_baru();
if(head==NULL)
{
head=baru;
tail=baru;
}
else
{
tail->next=baru;
baru->prev=tail;
tail=baru;
}
cout<<endl<<endl;
tampil();
}
void
hapus_belakang()
{
if (head==NULL)
cout<<"Kosong";
else if (head->next==NULL)
{
hapus=head;
head=NULL;
tail=NULL;
delete hapus;
}
else
{
hapus=tail;
tail=hapus->prev;
tail->next=NULL;
delete hapus;
}
cout<<endl<<endl;
tampil();
}
void
sorting()
{
node *temp1,*temp2;
temp1=new node;
temp2=new node;
int tempasal, tempumur;
char tempnama[20];
for(temp1=head;temp1!=NULL;temp1=temp1->next)
{
for(temp2=temp1->next;temp2!=NULL;temp2=temp2->next)
{
if(temp1->nama[0]>temp2->nama[0])
{
strcpy(tempnama,
temp1->nama);
strcpy(temp1->nama,
temp2->nama);
strcpy(temp2->nama,
tempnama);
}
}
}
getch();
}
void
cari()
{
char nama [50];
int pos = 0;
cout<<"\ncari berdasarkan
nama : ";
cin>>nama;
if(head==NULL)
{
cout<<"data di linked list
kosong";
getch();
return;
}
current = head;
while(current!=NULL)
{
pos++;
if(strcmp(nama,current->nama)==0)
{
cout<<"\nTerdapat Data :
"<<nama;
getch();
return;
}
if(current->next != NULL)
current = current->next;
else
break;
}
cout<<"data
tidak ada\n";
getch();
}
main()
{
do
{
system("cls");
cout<<"----------------------------------"<<endl;
cout<<"|--------------------------------|"<<endl;
cout<<"| Data Pengunjung Museum |"<<endl;
cout<<"|--------------------------------|"<<endl;
cout<<"----------------------------------"<<endl;
cout<<"| 1 | Tambah
data
|"<<endl;
cout<<"| 2 | Hapus
data
|"<<endl;
cout<<"| 3 | Cari
data
|"<<endl;
cout<<"| 4 | Urutkan
data |"<<endl;
cout<<"| 5 |
Tampilkan |"<<endl;
cout<<"| 0 | Selesai |"<<endl;
cout<<"----------------------------------"<<endl;
cout<<"Pilihan Anda :
";
cin>>pil;
if(pil==1)
tambah_belakang();
else if(pil==2)
hapus_belakang();
else if(pil==3)
cari();
else if(pil==4)
{
tampil();
sorting();
cout<<"\nSetelah di
sort nama\n";
tampil();
}
else if(pil==5)
tampil();
else
cout<<"selesai";
}
while(pil!=0);
}
|

Tidak ada komentar:
Posting Komentar