senarai berantai berputar (circular single link...
TRANSCRIPT
SENARAI BERANTAI BERPUTAR (CIRCULAR SINGLE LINK LIST)
Senarai Berantai Berputar (circular link list) merupakan bentuk
pengembangan senarai berantai (link list) yang pointer elemen terakhirya (last
element) menunjuk elemen pertama (Head).
Model Logika
Model Fisik
Head
Oleh karena itu algoritma Traversing, Inserting dan Deleting elemen pada
Circular Link List agak sedikit berbeda dengan Link List biasa.
OPERASI DASAR PADA CIRCULAR SINGLE LINKED LIST
A. Operasi Traversing
Algoritma Traversing Circular Single Link List
TraversingCLL(head)If Head = NullWrite(‘List kosong’)
Else P = Head;Do Write(P->Info); P = P->Next;While P != Head;
EndifReturn
Head
Irna Ika IdaIra Indah
ALM INFO NEXT1 Indah 42 Ika 634 Irna 25 Ida 16 Ira 5
4
B. Operasi Searching
Algoritma Mencari Alamat Elemen Ke-K Pada Circular Link ListFindKCLL(Head, K, P)If Head = NULL
Write(‘List kosong’)Else IF K=1 Then
P = Head;Else
I = 1;P = Head;Do
Inc(I);P = P->Next;
While (P != head) && (I != K);Endif
Endif/*
If (I < K) Then Write(‘Alamat elemen ke ’, K, ‘ tidak ada !’)Else Write(‘Alamat elemen ke ’, K, ‘ adalah : ’, P);
*/Return
Algoritma Mencari Alamat Data (Q) Pada Circular Link List
FindQCLL(Head, Q, P)Found = False;P = Head;Do If P->Info = Q Found = True Else P = P->Next;While (P != Head) && (!Found);/*
If (P->Info <> Q) Then Write(‘Data ’, Q, ‘ tidak ada !’)Else Write(‘Alamat Data ’, Q, ‘ adalah : ’, P);
*/Return
Algoritma Mencari Alamat Elemen Terakhir Pada Circular Link ListFindLastCLL(Head, P)
P = Head;While (P->Next != Head) P = P->Next;EndOfWhile;// Write(‘Alamat elemen terakhir adalah : ’, P);
Return
C. Operasi InsertingC.1 Sebagai Elemen Pertama / Di Awal ListAlgoritma Menyisipkan Elemen Pada Awal Cirular Link List
InsertFirstCLL(Head, X)Malloc(Temp);Temp->Info = X;If Head = NULL Then
Temp->Next=Temp;Else
Temp->Next = Head;FindLastCLL(Head, P)P->Next = Temp;
EndifHead = Temp;
Return
C.2 Sebagai Elemen TerakhirAlgoritma Menyisipkan Elemen Pada Akhir Circular Link List
InsertLast(Head, X)Malloc(Temp);Temp->Info = X;If Head = NULL Then
Temp->Next=Temp;Else
Temp->Next = Head;FindLastCLL(Head,P); {Alm Elemen terakhir (P)}P->Next = Temp;
EndifReturn
C.3 Sebagai Elemen Ke-N yang Temp (1 < N <= MAX)Tidak ada perbedaan dengan single link list linear.