05-Modul-Struktur Data Algoritma Lanjut
05-Modul-Struktur Data Algoritma Lanjut
05
Teknik Teknik Informatika 06310007 Ruli Herdiana, S.Kom., M.Kom.
Abstract Kompetensi
Melakukan perancangan aplikasi Mahasiswa Mampu menjelaskan dan
menggunakan struktur Double menerapkan konsep Double Linked List
Linked List dan Operasi-operasinya Non Circular dengan HEAD dalam
kehidupan sehari-hari
Double Link List Non Circular Dengan HEAD
Double linked list non circular (DLNC) adalah sebuah linked list yang tidak hanya memiliki
satu pointer tetapi dua pointer, yaitu next dan prev. Pointer Next menunjuk pada node
setelahnya sedangkan pointer Prev menunjuk pada node sebelumnyadibentuk dengan
menyusun sejumlah elemen sehingga pointer next menunjuk ke elemen yang mengikutinya
dan pointer prev menunjuk ke elemen yang mendahuluinya. Untuk menunjukkan head dari
double linked list, maka pointer prev dari elemen pertama menunjuk NULL.
Untuk menunjukkan tail dari double linked list tersebut, maka pointer next dari elemen
terakhir menunjuk NULL. Susunan elemen yang dihubungkan dalam bentuk double linked
list dapat dilihat pada Gambar di bawah ini
Bentuk ini sangat berguna ketika akan meletakkan suatu elemen pada list dan dapat memilih
dengan lebih bijaksana bagaimana memindahkannya. Sebagai contoh, salah satu fleksibilitas
dari double linked list adalah dalam hal memindahkan elemen dari pada menggunakan single
linked list.
NULL NULL
Deklarasi DLNC:
typedef struct Node
{
int data;
Node *Next;
Node *Prev;
}
if (LEmpty()==1)
{ head=baru;
head->next=NULL;
head->prev=NULL;
}
Else
{ baru->next=head;
baru->prev=baru;
head=baru;
Head
Head
if (LEmpty()==1)
{ head=baru;
head->next=NULL;
head->prev=NULL;
}
else
Head Temp
Prev 3.
45 Next Prev 15 Next Prev 9 Next Prev 19 Nex
t
Head Temp
Void HapusD()
{
if (LEmpty()==0)
{ if(head->next!=NULL)
{ Node *hapus=head;
head=head->next;
head->prev=NULL;
delete hapus;
}
else
{
head=NULL;
}
}
else
{
cout<<”List Kosong”;
}
Hapus Head
Hapus Head
Head
void HapusB ()
{
if(LEmpty()==0)
{ if(head->next !=NULL)
{
Node *hapus=head;
while(hapus->next!=NULL)
{ hapus=hapus->next;}
hapus->prev->next=NULL;
delete hapus;
}
else
{ head=NULL;
}
}
Else
{ cout<<”List Kosong”;
‘20 Struktur Data & Algoritma Lanjut
6 (Praktikum) Biro Akademik dan Pembelajaran
http://www.widyatama.ac.id
}
}
5. Menampilkan Data
Void printL ()
{ Node *temp=head;
if(LEmpty()==0)
{ while(temp!=NULL)
{ cout<<temp->data<<””;
temp=temp->next;
}
}
else
cout<<”List Kosong”;
}
Void clear()
{
Node *bantu, *hapus;
bantu=head;
while(bantu!=NULL)
{
hapus=bantu;
bantu=bantu->next;
delete hapus;
}
Head=NULL;
}
Latihan:
1. Header file Double Linked List Non Circular dengan Head, simpan program ini
dengan nama DLNC.h
#include <iostream.h>
#include <conio.h>
#include “DLNC.h”
Void initial()
{
Head=NULL;
}
Int LEmpty()
{ if (head==NULL)
return 1;
else
return 0;
}
Void InsertD(int d)
…
dan seterusnya
Void InsertB(int d)
…
dan seterusnya
void printL()
…
dan seterusnya
Void HapusD()
…
dan seterusnya
Void HapusB()
…
dan seterusnya
(ketikan sesuai dengan contoh dalam materi di atas : void InsertD, void Insert B, void
printL, void HapusD, void HapusB, void clear)
#include “DLNC.cpp”
main()
{
Initial()
InsertD(34);
InsertB(11);
InsertD(14);
‘20 Struktur Data & Algoritma Lanjut
8 (Praktikum) Biro Akademik dan Pembelajaran
http://www.widyatama.ac.id
cout<<”data : “;
printL();
HapusD();
HapusB();
Cout<<”\ndata : “;
printL();
getche();
}