Veri Yapısı - Dairesel Bağlantılı Liste
Dairesel Bağlantılı Liste, ilk öğenin son öğeyi ve son öğenin de ilk öğeyi işaret ettiği Bağlantılı listenin bir varyasyonudur. Hem Tek Bağlantılı Liste hem de Çift Bağlantılı Liste döngüsel bağlantılı liste haline getirilebilir.
Dairesel Olarak Tek Bağlantılı Liste
Tek bağlantılı listede, son düğümün sonraki göstericisi ilk düğümü gösterir.
Dairesel Olarak Çift Bağlantılı Liste
Çift bağlantılı listede, son düğümün bir sonraki göstericisi ilk düğüme işaret eder ve ilk düğümün önceki göstericisi, her iki yönde de dairesel oluşturan son düğüme işaret eder.
Yukarıdaki şekle göre, dikkate alınması gereken önemli noktalar aşağıdadır.
Son bağlantının bir sonraki bağlantısı, her iki durumda da listenin ilk bağlantısının yanı sıra çift bağlantılı listeye işaret eder.
Listenin çift bağlantılı olması durumunda, ilk bağlantının önceki, listenin sonunu gösterir.
Temel işlemler
Aşağıda, döngüsel bir liste tarafından desteklenen önemli işlemler verilmiştir.
insert - Listenin başına bir öğe ekler.
delete - Listenin başından bir öğeyi siler.
display - Listeyi görüntüler.
Yerleştirme İşlemi
Aşağıdaki kod, tek bağlantılı listeye dayalı döngüsel bağlantılı listeye ekleme işlemini gösterir.
Misal
insertFirst(data):
Begin
create a new node
node -> data := data
if the list is empty, then
head := node
next of node = head
else
temp := head
while next of temp is not head, do
temp := next of temp
done
next of node := head
next of temp := node
head := node
end if
End
Silme İşlemi
Aşağıdaki kod, tek bağlantılı listeye dayalı döngüsel bağlantılı bir listede silme işlemini gösterir.
deleteFirst():
Begin
if head is null, then
it is Underflow and return
else if next of head = head, then
head := null
deallocate head
else
ptr := head
while next of ptr is not head, do
ptr := next of ptr
next of ptr = next of head
deallocate head
head := next of ptr
end if
End
Liste İşlemini Görüntüle
Aşağıdaki kod, döngüsel bağlantılı bir listede görüntüleme listesi işlemini gösterir.
display():
Begin
if head is null, then
Nothing to print and return
else
ptr := head
while next of ptr is not head, do
display data of ptr
ptr := next of ptr
display data of ptr
end if
End
C programlama dilinde uygulaması hakkında bilgi edinmek için lütfen buraya tıklayın .