Kamis, 04 Juni 2020

Double Linked List Pada C++

Double Linked List C++

Double Linked List atau Senarai Berantai Ganda hampir sama dengan Single Linked List , yaitu pengalokasian memori secara dinamis yang digunakan untuk menyimpan data. 
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);
} 
                                                                     Output Program:
Double Linked List C++

Previous Post
Next Post

0 Post a Comment: