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) Info Medan penyambung ke elemen berikutnya (Next) Ika Ira Model Fisik 3 Alm Prev Info Next 1 2 0 2 5 Ira 1 3 0 5 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
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(, X) Temp->Prev = NULL; If ( = NULL) Then Temp->Next = NULL Begin Temp->Next = ; ->Prev = Temp; End; = Temp; 2.2 Penyisipan elemen sebagai elemen terakhir (di akhir list) Algoritma menyisipkan elemen di akhir list INSERTLAST_DLL(HEAD, X) Temp->Next = NULL; If ( = NULL) Then Temp->Prev = NULL; = Temp; Begin P = ; While (P->Next!= NULL)Do {cari alm elemen terakhir} P = P->Next; Eofwhile P->Next = Temp; Temp->Prev = P; Endif; Two Way List...2/5
2.3 Menyisipkan elemen sebagai elemen ke N yang baru (1 < N < elemen) Algoritma Menyisipkan di tengah Link List InsertN_DLL(, X, N) FindK(, N-1, P); //Cari alamat elemen ke N-1 If P = NULL Write( Elemen ke :,N-1, tidak ada ); Free(Temp); Temp->Next = P->Next; Temp->Prev = P; P->Next->Prev = Temp; P->Next = Temp; Endif 3. Deleting 3.1 Hapus elemen pertama Algoritma Deleting Elemen Pertama Pada Double Link List 2 Ika Ira P 3 DeleteFirst_DLL() If ( = NULL) Write( List Kosong! ) P = ; { Step 1 } If (P->Next!= NULL) { List Lebih Dari 1 Elemen } = P->Next; { Step 2 } ->Prev = NULL; { Step 3 } = NULL; { List Hanya 1 Elemen} EndIf Free(P); { Step } EndIf Two Way List...3/5
SENARAI BERANTAI DENGAN KEPALA DAN EKOR Senarai berantai dengan kepala dan ekor adalah senarai berantai yang sering digunakan dalam mensimulasikan antrian (QUEUE) Tail Ika Ira Two Way List.../5
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 Circular double linked list dengan 1 elemen Circular double linked list dengan elemen Ika Ira Model Fisik 3 Alm Prev Info Next 1 2 3 2 5 Ira 1 3 1 5 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(, X) If ( = NULL) Temp->Next = Temp; Temp->Prev = Temp; Temp->Prev = ->Prev; ->Prev->Next = Temp; Temp->Next = ; ->Prev = Temp; End; = Temp; Two Way List...5/5