071c4 circular linked list

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

Head
Irna

Ika

Ira

Ida

Indah

Model Fisik

Head
4

ALM
1
2
3

4
5
6

INFO
Indah
Ika

NEXT
4
6

Irna
Ida
Ira

2
1
5


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 = Null
Write(‘List kosong’)
Else
P = Head;
Do
Write(P->Info);
P = P->Next;
While P != Head;
Endif
Return

B. Operasi Searching
Algoritma Mencari Alamat Elemen Ke-K Pada Circular Link List
FindKCLL(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 List
FindLastCLL(Head, P)
P = Head;

While (P->Next != Head)
P = P->Next;
EndOfWhile;
// Write(‘Alamat elemen terakhir adalah : ’, P);
Return

C. Operasi Inserting
C.1 Sebagai Elemen Pertama / Di Awal List
Algoritma 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;
Endif
Head = Temp;

Return
C.2 Sebagai Elemen Terakhir
Algoritma 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;
Endif
Return
C.3 Sebagai Elemen Ke-N yang Temp (1 < N