0% menganggap dokumen ini bermanfaat (0 suara)
92 tayangan9 halaman

05-Modul-Struktur Data Algoritma Lanjut

1. Modul ini membahas double linked list non circular dengan head. Double linked list memiliki dua pointer yaitu next dan prev untuk menghubungkan antar node. 2. Terdapat operasi penambahan dan penghapusan node di depan dan belakang linked list. Penambahan di depan mengubah pointer head, sedangkan di belakang menggunakan pointer bantuan untuk mencari node terakhir. 3. Penghapusan di depan mengubah head, sedangkan di belakang mengubah pointer prev dari node

Diunggah oleh

ruli
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
92 tayangan9 halaman

05-Modul-Struktur Data Algoritma Lanjut

1. Modul ini membahas double linked list non circular dengan head. Double linked list memiliki dua pointer yaitu next dan prev untuk menghubungkan antar node. 2. Terdapat operasi penambahan dan penghapusan node di depan dan belakang linked list. Penambahan di depan mengubah pointer head, sedangkan di belakang menggunakan pointer bantuan untuk mencari node terakhir. 3. Penghapusan di depan mengubah head, sedangkan di belakang mengubah pointer prev dari node

Diunggah oleh

ruli
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 9

MODUL PERKULIAHAN

Struktur Data &


Algoritma Lanjut
(Praktikum)
Double Link List Non Circular dengan
HEAD

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

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

NULL Prev Data Next NULL

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.

Prev Data Next Prev Data Next Prev Data Next

NULL NULL

Deklarasi DLNC:
typedef struct Node
{
int data;
Node *Next;
Node *Prev;
}

‘20 Struktur Data & Algoritma Lanjut


2 (Praktikum) Biro Akademik dan Pembelajaran
http://www.widyatama.ac.id
Pembentukan Node baru:
Node *baru=new Node;
baru->data=dataBaru;
baru->next=NULL;
baru->prev=NULL;

Inisialisasi dan LEmpty:


Void initial()
{
head=NULL;
}
int LEmpty()
{
if (head==NULL)
return 1;
else
return 0;
}

OPERASI PADA DOUBLE LINKED LIST


1. Menambah data di depan
 Ada dua jenis penambahan data, apaila linked list kosong maka head langsung
dikaitkan ke data baru
 Apabila linked list tida kosong, maka pointer next dari node baru akan di arahkan ke
node pertama, selanjutnya pointer prev dari node pertama akan diarahkan ke node
baru, kemudian head diarahkan ke node baru.

void InsertD (int d)


{
Node *baru=new Node;
baru->data=d
baru->next=NULL;
baru->prev=NULL;

if (LEmpty()==1)
{ head=baru;
head->next=NULL;
head->prev=NULL;
}
Else
{ baru->next=head;
baru->prev=baru;
head=baru;

‘20 Struktur Data & Algoritma Lanjut


3 (Praktikum) Biro Akademik dan Pembelajaran
http://www.widyatama.ac.id
}
}

Head

Prev 45 Next Prev 15 Next Prev 9 Next

Head

Prev 19 Nex Prev 45 Next Prev 15 Next Prev 9 Next


t
Head

Prev 19 Nex Prev 45 Next Prev 15 Next Prev 9 Next


t
Head

Prev 19 Nex Prev 45 Next Prev 15 Next Prev 9 Next


t

2. Menambah Data Di Belakang


 Untuk menambah data dibelakang perlu menggunakan pointer bantuan untuk
mencari node terakhir yang akan disambung dengan node baru
 Setelah pointer next dari node terakhir di arahkan ke node baru melalui pointe
bantuan, pointer prev dari node baru diarahkan ke node terakhir dari linked list

void InsertB (int d)


{
Node *baru=new Node;
baru->data=d
baru->next=NULL;
baru->prev=NULL;

if (LEmpty()==1)
{ head=baru;
head->next=NULL;
head->prev=NULL;
}
else

‘20 Struktur Data & Algoritma Lanjut


4 (Praktikum) Biro Akademik dan Pembelajaran
http://www.widyatama.ac.id
{ temp=head;
while (temp->next!=NULL)
{
temp=temp->next;
}
temp->next=baru;
baru->prev=temp;
}
}

Head Temp

Prev 45 Next Prev 15 Next Prev 9 Next Prev 19 Nex


t
Head Temp

Prev 3.
45 Next Prev 15 Next Prev 9 Next Prev 19 Nex
t
Head Temp

Prev 45 Next Prev 15 Next Prev 9 Next Prev 19 Nex


t

3. Menghapus Data Di Depan

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”;
}

‘20 Struktur Data & Algoritma Lanjut


5 (Praktikum) Biro Akademik dan Pembelajaran
http://www.widyatama.ac.id
Head Hapus

Prev 45 Next Prev 15 Next Prev 9 Next

Hapus Head

Prev 45 Next Prev 15 Next Prev 9 Next

Hapus Head

Prev 45 Next Prev 15 Next Prev 9 Next

Head

Prev 15 Next Prev 9 Next

4. Menghapus Data Di Belakang


 Prinsip dari menghapus data di belakang adalah mencari node terakhir
 Kemudian manset pointer yang mengarah kepada node terakhir ke NULL

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”;
}

6. Menghapus Semua Data

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>

Type struct Node{


Int data;
Node *next;
Node *prev;
};
Node *head;
void initial();
int LEmpty();
void InsertD(int d);
void InsertB(int d)
‘20 Struktur Data & Algoritma Lanjut
7 (Praktikum) Biro Akademik dan Pembelajaran
http://www.widyatama.ac.id
void printL();
void HapusD();
void hapusB();

2. Procedure & Function, simpan program berikut dengan nama DLNC.cpp

#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)

3. Main Program, simpan dengan nama MainDNLC.cpp

#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();
}

‘20 Struktur Data & Algoritma Lanjut


9 (Praktikum) Biro Akademik dan Pembelajaran
http://www.widyatama.ac.id

Anda mungkin juga menyukai