bedanya Double Linked List lebih flexible dibanding single linked list karena pada Double Linked List semua simpul-simpul yang ada didalamnya memiliki dua buah penunjuk yang digunakan untuk mengaitkan diri dengan simpul lain yang ada di sebelah kanannya dan di sebelah kirinya.
didalam double linked list ada tiga unsur pendukung yang penting, yaitu:
1. Penunjuk (biasa disebut pointer)
penunjuk atau pointer yang dimaksud disini alat yang digunakan untuk menunjuk sebuah simpul.penunjuk dapat menunjuk ke sebuah simpul, ataupun ke sebuah tempat kosong (null).
2. Simpil Ganda (biasa disebut node)
simpul ini disebut simpul ganda karena simpul ini mempunyai dua buah pointer, yaitu kiri dan kanan. artinya pointer kanan menunjuk ke elemen disebelah kirinya.
3. Senerai Berantai atau Double Linked List itu sendiri
seperti Single Linked List, Double Linked List merupakan kumpulan simpul-simpul yang terhubung satu dengan yang lain. hanya bedanya pada senerai ini setiap simpulnya mempunyai dua penghubung, kiri dan kanan.
CONTOH Program Double Linked List
Program Segitiga Terbalik Double Linked List
Kode Program:
#pragma hdrstop
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#pragma argused
using namespace std;
typedef char data;
typedef struct strSimpul
{
data masukkan;
struct strSimpul *kanan;
struct strSimpul *kiri;
}Simpul;
typedef struct strSeneraiGanda
{
Simpul *awal;
Simpul *akhir;
}SeneraiGanda;
void buat(SeneraiGanda *q)
{
q->awal=NULL;
q->akhir=NULL;
}
void Tambah_Depan(SeneraiGanda *q, data elemen)
{
Simpul *baru= new Simpul();
baru->masukkan=elemen;
if(q->awal==NULL && q->akhir==NULL)
{
q->awal=baru;
q->akhir=baru;
baru->kanan=NULL;
baru->kiri=NULL;
}
else
{
q->awal->kiri=baru;
baru->kanan=q->awal;
q->awal=baru;
q->awal->kiri=NULL;
}
}
void Baca_Maju(SeneraiGanda *q)
{
Simpul *bantu=new Simpul();
bantu=q->awal;
while(bantu!=NULL)
{
cout<<bantu->masukkan<<" ";
bantu=bantu->kanan;
}cout<<endl;
}
int main()
{
SeneraiGanda *SnrGd=new SeneraiGanda();
buat (SnrGd);
data hasil;
char pilih='1';
while (pilih=='1' || pilih=='2' || pilih=='3')
{
cout<<" Pilih Menu "<<endl;
cout<<" 1. Tambah Depan "<<endl;
cout<<" 2. Tambah Belakang "<<endl;
cout<<" 3. Baca Maju "<<endl;
cout<<" 4. Selesai "<<endl;
cout<<" Pilihan = "<<endl;
cin>>pilih;
switch(pilih)
{
case '1':
{
cout<<" Masukkan Datanya : ";
cin>>hasil;
Tambah_Depan(SnrGd, hasil);
system("cls");
}
break;
case '3':
{
Baca_Maju(SnrGd);
}
break;
default:
{
cout<<" Selesai. Tekan Enter ";
}
break;
}
}
getch();
delete(SnrGd);
}
0 Post a Comment: