senarai berantai dua arah (double link list)

advertisement
Materi Kuliah Struktur Data
Struktur Data Linear
SENARAI BERANTAI DUA ARAH (DOUBLE LINKED LIST)
Senarai
Berantai
Dua
Arah
(Double
Linked
List)
merupakan
bentuk
pengembangan Senarai Berantai (Link List) yang tidak hanya memiliki pointer yang
menunjuk ke elemen berikutnya (Next Element), tapi juga memiliki pointer yang
menunjuk ke elemen sebelumnya (Prev Element). Sehingga setiap node/simpul dalam
double linked list dibagi dalam 3 medan yaitu:
Medan penyambung ke
elemen sebelumnya (Prev)
Medan penyambung ke
elemen berikutnya (Next)
Info
Model Logika
Head
Irna
Ika
Ira
Ida
Model Fisik
Head
3
Alm
1
2
3
4
5
Prev
2
5
0
Info
Ida
Ira
Irna
Next
0
1
5
3
Ika
2
PENDEKLARASIAN SIMPUL (NODES)
typedef struct nodestr *node;
struct nodestr
{
int info;
node prev, next;
};
node head, search, last, temp;
Operasi pada Double Link List
1. Traversing
Untuk algoritma traversing sama seperti pada single Link List
Two Way List ........................................................................................................................................................................... 1/5
Materi Kuliah Struktur Data
Struktur Data Linear
2. Inserting
Seperti halnya single linked list, operasi inserting dalam double linked list juga
dibedakan dalam tiga posisi penyisipan yaitu: sebagai elemen pertama (di awal list),
sebagai elemen terakhir, dan di tengah list.
2.1 Sebagai Elemen Pertama / Di Awal List
Algoritma Menyisipkan Elemen Pada Awal List
InsertFirst_DLL(Head, X)
Malloc(Temp);
Temp->Info = X;
Temp->Prev = NULL;
If (Head = NULL) Then
Temp->Next = NULL
Else Begin
Temp->Next = Head;
Head->Prev = Temp;
End;
Head = Temp;
Return Return
2.2 Penyisipan elemen sebagai elemen terakhir (di akhir list)
Algoritma menyisipkan elemen di akhir list
INSERTLAST_DLL(HEAD, X)
Malloc(Temp);
Temp->Next = NULL;
If (Head = NULL) Then
Temp->Prev = NULL;
Head = Temp;
Else Begin
P = Head;
While (P->Next != NULL)Do {cari alm elemen terakhir}
P = P->Next;
Eofwhile
P->Next = Temp;
Temp->Prev = P;
Endif;
Return
Two Way List ........................................................................................................................................................................... 2/5
Materi Kuliah Struktur Data
Struktur Data Linear
2.3 Menyisipkan elemen sebagai elemen ke N yang baru (1 < N < ∑ elemen)
Algoritma Menyisipkan di tengah Link List
InsertN_DLL(Head, X, N)
Malloc(Temp);
Temp->Info = X;
FindK(Head, N-1, P); //Cari alamat elemen ke N-1
If P = NULL
Write(‘Elemen ke : ‘,N-1,’tidak ada’);
Free(Temp);
Else
Temp->Next = P->Next;
Temp->Prev = P;
P->Next->Prev = Temp;
P->Next = Temp;
Endif
Return
3. Deleting
3.1 Hapus elemen pertama
Algoritma Deleting Elemen Pertama Pada Double Link List
2
Head
Irna
P
4
Ika
Ira
Ida
3
DeleteFirst_DLL(Head)
If (Head = NULL)
Write(‘List Kosong !’)
Else
P = Head;
If (P->Next != NULL)
Head = P->Next;
Head->Prev = NULL;
Else
Head = NULL;
EndIf
Free(P);
EndIf
Return
{
{
{
{
Step
List
Step
Step
1 }
Lebih Dari 1 Elemen }
2 }
3 }
{ List Hanya 1 Elemen}
{ Step 4 }
Two Way List ........................................................................................................................................................................... 3/5
Materi Kuliah Struktur Data
Struktur Data Linear
SENARAI BERANTAI DENGAN KEPALA DAN EKOR
Senarai berantai dengan kepala dan ekor adalah senarai berantai yang sering
digunakan dalam mensimulasikan antrian (QUEUE)
Model Logika
Head
Tail
Irna
Ika
Ira
Ida
Two Way List ........................................................................................................................................................................... 4/5
Materi Kuliah Struktur Data
Struktur Data Linear
SENARAI BERANTAI DUA ARAH BERPUTAR
CIRCULAR DOUBLE LINK LIST (CDLL)
Senarai Berantai Dua Arah Berputar (circular double link list) merupakan bentuk
pengembangan Senarai Berantai Dua Arah (double link list), dimana pointer Next
Element Terakhir menunjuk Elemen Pertama dan Prev Elemen Pertama menunjuk
Elemen Terakhir, sehingga tidak ada pointer yang bernilai NULL, kecuali list dalam
keadaan kosong
Model Logika
Head
Circular double linked list dengan 1 elemen
Irna
Circular double linked list dengan 4 elemen
Head
Irna
Ika
Ira
Ida
Model Fisik
Head
3
Alm
1
2
3
4
5
Prev
2
5
1
Info
Ida
Ira
Irna
Next
3
1
5
3
Ika
2
Operasi pada CDLL
1. Operasi Travesing
Algoritma traversing sama dengan algoritma traversing pada circular single link list
2. Operasi Inserting
2.1 Algoritma Inserting Elemen Di Awal Circular Double Link List
InsertFirst_CDLL(Head, X)
Malloc(Temp);
Temp->Info = X;
If (Head = NULL)
Temp->Next = Temp;
Temp->Prev = Temp;
Else
Temp->Prev = Head->Prev;
Head->Prev->Next = Temp;
Temp->Next = Head;
Head->Prev = Temp;
End;
Head = Temp;
Return
Two Way List ........................................................................................................................................................................... 5/5
Download