JavaScript ile Circular Doubly LinkedList-3

MUHAMMET ÇOKYAMAN
3 min readMar 23, 2021

Herkese tekrardan merhaba , Linked List serimizin üçüncüsü olan Circular Doubly Linked List ile beraberiz. Bu ders ilk dersten veya ikinci dersten çok farklı olmayacak. Eğer diğer dersileri okumamış iseniz ve tek bağlantılı listenin ne olduğunu bilmiyorsanız, bunu öğrenmeden önce onu anlamanızı tavsiye ederim. Önce ordan başlamalısınız orda Singly Linked List ve Doubly Linked List’in tüm detaylarını anlattığım yapı mevcut ulaşmak isteyen olursa aşağıdaki linkten ulaşabilir.

Singly Linked List-1

Doubly Linked List-2

Döngüsel bağlantılı liste (Circular Linked List) , listenin sonu olmayan bağlantılı listenin bir varyasyonudur. Listenin son öğesi, boşa işaret etmek yerine ilk öğeyi gösterecektir. Tüm düğümler bir daire oluşturacak şekilde bağlanır.Çift bağlantılı(Doubly Linked List)bir liste ile döngüsel bağlantılı (Circular Linked List) bir liste uygulandığında, ilk öğe sonuncuyu ve sonuncuyu ilkini gösterir.

avantajları : Bir kuyruğun uygulanması için kullanışlıdır. Tek bağlantılı(Linked List) listeyle uygulanan kuyruğun aksine, ilk(this.head) ve son öğeyi(this.tail) takip etmemize gerek yoktur. Sadece son düğümün göstericisini koruyabiliriz ve ilk düğüme her zaman son düğümden bir sonraki olarak erişilebilir.

Circular Linked List Create :

Elemanı ve sonraki elemana referansı depolayacak bir Node nesnesi kullanacağız.

push( Ekleme İşlemi ) :

Eğer kafa boşsa o zaman mevcut Düğümü başa atayın, aksi takdirde Düğümü bir sonraki eleman olarak ekleyin.Her yerleştirmeden sonra ilk Düğümü baş olarak ve son Düğümü kuyruk olarak işaretleyin. Ve sonra birbirlerini göstermelerini sağlayın.

indexOf ( Elemanın İndex Değerini Bulma) :

Listede verilen dizindeki düğümü döndürür. Bu işlevi, döngüsel çift bağlantılı bir liste oluşturmak için belirli dizindeki düğümleri elde etmek için yardımcı bir işlev olarak kullanacağız.

insert( Başa , Araya , Sona Verilen İndex ile Ekleme İşlemi) :

Dairesel çift bağlantılı listeye bir öğe eklerken üç farklı durum vardır. 1:Mevcut eleman başlangıçta eklenecekse, o zaman tüm mevcut elemanları geçerli elemanın bir sonraki elemanı olarak yapın ve son elemanı yeni düğümü işaret edecek şekilde yapın. 2:Biraz daha karmaşıktır, mevcut dizindeki öğeyi geçerli öğeyi gösterecek şekilde yapmalıyız ve geçerli öğeyi bir sonraki öğeyi gösterecek ve onu bir sonraki öğeden önceki olarak işaretlemeliyiz.3:Düğüm sonuna eklenecekse, son öğeyi yeni öğeyi, yeni öğeyi ilk öğeyi ve ilk öğeyi son öğeyi işaret edecek şekilde yapın.

remove(Silme işlemi) :

Bu adımda ayrıca ele alınması gereken üç farklı durum vardır. 1:Eleman baştan kaldırılacaksa, o zaman sadece mevcut elemanın bir sonraki elemanına işaret edin ve son elemanın yeni başı göstermesini sağlayın. 2:Bu biraz daha karmaşık bir süreçtir, elemanın bir sonraki elemanını o andaki elemanın bir sonraki elemanına işaret etmek için mevcut indekste elemanın önceki elemanını yapmamız gerekir. 3:Düğüm kuyruktan çıkarılacaksa, kafayı göstermesi için ikinci son düğümü yapmamız gerekir.

toString( Listeyi String Formatında Hazırlamak) :

toArray( Listeyi String Formatında Hazırlamak) :

KODLARA BAKIN 🎉

Bu içeriklerin devamı gelecek… JavaScript ile mutlu günler 👨‍💻👩‍💻.

twitter :https://www.twitter.com/M_ckymn

github :https://www.github.com/ckymn

linkedin :https://www.linkedin.com/in/ckymn/

Referance :

--

--