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