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 .