Bir veri yapısı, verimli programların oluşturulmasıyla sonuçlanan verileri depolamak, almak ve silmek için önceden tanımlanmış farklı yöntemler kullanır. Bağlantılı liste, bağlı (veya bağlantılı) düğümlerin bir listesinden oluşan popüler bir veri yapısıdır.

Ancak Java'da bağlantılı bir liste nasıl oluşturulur? Hadi bir bakalım.

Her bağlantılı liste, genellikle "baş" olarak adlandırılan ve her zaman listenin başına işaret etme sorumluluğuna sahip özel bir düğümle başlar. Başlık önemlidir çünkü bağlantılı bir listedeki her düğümün ardılını fiziksel olarak takip etmesi gerekmez (yani bir öncekinin ve halefin fiziksel olarak bitişik olması gerekmez).

Her veri yapısı gibi, bağlantılı liste, herhangi bir geliştirici tarafından kullanılabilecek bir dizi önceden tanımlanmış işlev aracılığıyla oluşturma, alma, ekleme ve yok etmeyi kolaylaştırır.

Bağlantılı listeler oluşturmak ve işlemek için tasarlanmış bir Java programının üç farklı bölümü olacaktır; düğüm sınıfı, bağlantılı liste sınıfı ve sürücü. Bu üç bölüm tek bir dosyada birleştirilebilse de, bilgisayar bilimlerinde her geliştiricinin bilmesi gereken "endişelerin ayrılması" olarak bilinen bir tasarım ilkesi vardır.

instagram viewer

Sorunların ayrılması ilkesi, kodun belirli bir sorunu ele alan her bölümünün ayrılması gerektiğini belirtir. Bu ilke, daha temiz (daha okunabilir) kod oluşturmanıza yardımcı olur ve veri yapıları oluşturmak için idealdir.

Java'da bağlantılı liste oluşturmanın ilk adımı bir düğüm sınıfı oluşturmaktır. Bir düğüm sınıfının iki özelliği olmalıdır; özniteliklerden biri düğümün veri bölümünü temsil ederken, diğer öznitelik bağlantılı bölümü temsil edecektir. Bir düğüm sınıfının ayrıca bir yapıcısı, alıcıları ve ayarlayıcıları olmalıdır.

İlişkili: Java'da Sınıfların Nasıl Oluşturulacağını Öğrenin

Alıcılar ve ayarlayıcılar, diğer sınıfların (bağlı liste sınıfı gibi) bağlantılı liste içindeki çeşitli düğümlere erişmesine izin verecektir.

Düğüm Sınıfı Örneği

Aşağıda, ne demek istediğimiz hakkında bir fikir edinmeniz için bir düğüm sınıfı örneği verilmiştir:


ortak sınıf Düğüm {
özel int Veri;
özel Düğüm NextNode;
//constructor
genel Düğüm() {
Veri = 0;
SonrakiDüğüm = boş;
}
//alıcılar ve ayarlayıcılar
public int getData() {
Veri döndürme;
}
public void setData (int data) {
veri = veri;
}
genel Düğüm getNextNode() {
NextNode'u döndür;
}
public void setNextNode (Düğüm nextNode) {
NextNode = nextNode;
}
}

Bu örnekte, data niteliği tamsayı değerlerini depolayacaktır. Artık düğüm sınıfına sahip olduğunuza göre, bağlantılı listeye geçme zamanı.

Aşağıda Java'da bağlantılı bir liste örneği verilmiştir.

genel sınıf LinkedList {
özel Düğüm Başı;
//constructor
genel LinkedList() {
Baş = boş;
}
}

Yukarıdaki kod, bağlantılı bir liste sınıfı oluşturacaktır, ancak çeşitli işlemleri olmadan, sınıf boş bir kabuğun eşdeğeri olarak görülebilir. Bağlantılı liste veri yapısı, onu doldurmak için kullanılabilecek çeşitli işlemlere sahiptir:

  • Ön tarafa yerleştirin.
  • Ortasına yerleştirin.
  • Arka tarafa yerleştirin.

İlişkili: JavaScript ES6 Sınıfları ile Veri Yapıları Nasıl Oluşturulur

Ekleme yöntemlerinin bağlantılı liste koleksiyonu, bir geliştiricinin bu verileri kullanmayı seçmesinin bir nedenidir. yığınlar gibi başka bir veri yapısı üzerinde yapı (yalnızca üstten ekleme ve silmeye izin verir).

Önden Ekleme Yöntemini Kullanma

Önden ekleme yöntemi, adından da anlaşılacağı gibi, bağlantılı listenin önüne yeni veriler (veya yeni düğümler) ekler.

Ön Yöntem Örneğine Ekle

Aşağıda, listenizin önüne yeni verileri nasıl ekleyeceğinize dair bir örnek verilmiştir.

 // düğümü ön yönteme ekle
public void insertAtFront (int anahtarı) {
// düğüm sınıfını kullanarak yeni bir düğüm oluştur
Düğüm Sıcaklığı = yeni Düğüm();
// Temp düğümünün başarıyla oluşturulup oluşturulmadığını kontrol edin
// kullanıcı tarafından sağlanan verileri ona atayın
if (Sıcaklık != boş) {
Temp.setData (anahtar);
Temp.setNextNode (boş);
//bağlı listenin başının boş olup olmadığını kontrol edin
// yeni oluşturulan düğümü baş konumuna ata
if (Kafa == boş) {
Kafa = Sıcaklık;
}
//bir düğüm zaten baş konumundaysa
// yeni düğümü buna ekleyin ve onu baş olarak ayarlayın
Başka {
Temp.setNextNode (Baş);
Kafa = Sıcaklık;
}
}
}

NS insertAtFront Yukarıdaki örnekteki yöntem, bir kullanıcının belirli bir bağlantılı listeye yeni düğümler eklemesine izin verir.

Ön Örneğe Ekleme Uygulaması

Aşağıda, eki ön tarafa nasıl uygulayacağınıza dair bir örnek verilmiştir.

genel sınıf Sürücü {
//programı çalıştırır
public static void main (String[] args) {
//Liste adında yeni bir bağlantılı liste oluştur
LinkedList Listesi = yeni LinkedList();
// her değeri bağlantılı listenin önüne yeni bir düğüm olarak ekle
List.insertAtFront (10);
List.insertAtFront (8);
List.insertAtFront (6);
List.insertAtFront (4);
List.insertAtFront (2);
}
}

NS sürücü class (Java'da genellikle yürütülebilir sınıfa atanan addır), LinkedList sınıfını beş çift sayıdan oluşan bağlantılı bir liste oluşturmak için kullanır. Yukarıdaki koda bakıldığında, "2" sayısının bağlantılı listede baş konumda olduğunu görmek kolay olmalıdır. Ama bunu nasıl doğrulayabilirsiniz?

Tüm Düğümleri Görüntüle Yöntemini Kullanma

Tüm düğümleri göster yöntemi, önemli bir bağlantılı liste yöntemidir. Onsuz, bir geliştirici bağlantılı bir listedeki düğümleri göremez. Listeyi oluşturan her bir düğümde depolanan verileri yazdırarak bağlantılı listede (baştan başlayarak) dolaşır.

Tüm Düğümleri Göster Yöntem Örneği

Aşağıda Java'da tüm notları göster yöntemini kullanmanın bir örneği verilmiştir.

//tüm düğümler yöntemini göster
genel geçersiz displayAllNodes() {
// Temp çağrısı için yeni bir düğüm oluşturun ve onu bağlantılı listenin başına atayın
// eğer baş boş bir değere sahipse bağlantılı liste boştur
Düğüm Sıcaklığı = Baş;
if (Kafa == boş){
System.out.println("Liste boş.");
geri dönmek;
}
System.out.println("Liste:");
while (Sıcaklık != boş) {
//her düğümdeki verileri konsola yazdırın (kafadan başlayarak)
System.out.print (Temp.getData() + " ");
Sıcaklık = Temp.getNextNode();
}
}

şimdi ki DisplayAllNodes yöntemi eklendi Bağlantılı liste sürücü sınıfına tek satır kod ekleyerek bağlantılı listeyi görüntüleyebilirsiniz.

Tüm Düğümleri Görüntüle Yöntemini Kullanma Örneği

Aşağıda, tüm düğümleri göster yöntemini nasıl kullanacağınızı göreceksiniz.

// bağlantılı bir listedeki düğümleri yazdır
List.displayAllNodes();

Yukarıdaki kod satırını yürütmek, konsolda aşağıdaki çıktıyı üretecektir:

Liste:

2 4 6 8 10

Düğüm Bul Yöntemini Kullanma

Bir kullanıcının bağlantılı bir listede belirli bir düğümü bulmak isteyeceği durumlar olacaktır.

Örneğin, milyonlarca müşterisi olan bir bankanın, yalnızca belirli bir müşterinin ayrıntılarını görmeleri gerektiğinde tüm müşterilerini veritabanına yazdırması pratik olmaz.

Bu nedenle, kullanmak yerine DisplayAllNodes yöntemi, daha verimli bir yöntem, gerekli verileri içeren tek düğümü bulmaktır. Bu nedenle bağlantılı liste veri yapısında tek bir düğüm yönteminin aranması önemlidir.

Düğüm Yöntemi Örneği Bul

Aşağıda, bul düğümü yönteminin kullanımına bir örnek verilmiştir.

// bir anahtar kullanarak tek bir düğüm arayın
genel boolean findNode (int anahtarı) {
//yeni bir düğüm oluştur ve onu bağlantılı listenin başına yerleştir
Düğüm Sıcaklığı = Baş;
// mevcut düğüm boş değilken
//verisinin kullanıcı tarafından sağlanan anahtarla eşleşip eşleşmediğini kontrol edin
while (Sıcaklık != boş) {
if (Temp.getData() == anahtar) {
System.out.println("Düğüm listede var");
true döndür;
}
// sonraki düğüme geç
Sıcaklık = Temp.getNextNode();
}
// eğer anahtar bağlantılı listede bulunamadıysa
System.out.println("Düğüm listede yok");
yanlış döndür;
}

İle DisplayAllNodes yöntemi, onayladığınızı Bağlantılı liste 2'den 10'a kadar 5 çift sayı içerir. NS findNode yukarıdaki örnek, sürücü sınıfındaki yöntemi çağırarak ve sayıyı parametre olarak sağlayarak bu çift sayılardan birinin 4 rakamı olup olmadığını onaylayabilir.

Düğüm Bul Yöntemi Örneğinin Kullanılması

Aşağıda, bul düğüm yöntemini pratikte nasıl kullanacağınıza dair bir örnek verilmiştir.

// bağlantılı listede bir düğüm olup olmadığını kontrol edin
List.findNode (4);

Yukarıdaki kod konsolda aşağıdaki çıktıyı üretecektir:

Düğüm listede

Düğüm Silme Yöntemini Kullanma

Yukarıdaki aynı banka örneğini kullanarak, bankanın veri tabanındaki bir müşteri hesabını kapatmak isteyebilir. Bir düğümü silme yönteminin yararlı olacağı yer burasıdır. En karmaşık bağlantılı liste yöntemidir.

Bir Düğümü Sil yöntemi, belirli bir düğümü arar, o düğümü siler ve önceki düğümü, silinen düğümü takip eden düğüme bağlar.

Bir Düğüm Yöntemi Örneği Sil

Aşağıda, bir düğümü silme yöntemine bir örnek verilmiştir.

public void findAndDelete (int anahtarı) { 
Düğüm Sıcaklığı = Baş;
Düğüm önceki = boş;
// baş düğümün verileri tutup tutmadığını kontrol edin
// ve sil
if (Temp != null && Temp.getData() == anahtar) {
Kafa = Temp.getNextNode();
geri dönmek;
}
// listedeki diğer düğümleri ara
// ve sil
while (Sıcaklık != boş) {
if (Temp.getNextNode().getData() == anahtar ) {
önceki = Temp.getNextNode().getNextNode();
Temp.setNextNode (önceki);
geri dönmek;
}
Sıcaklık = Temp.getNextNode();
}
}

Bir Düğüm Yöntemi Silme Örneğinin Kullanılması

Aşağıda, uygulamada bir düğüm silme yönteminin kullanımına bir örnek verilmiştir.

//veri 4'ü tutan düğümü sil
List.findAndDelete (4);
// bağlantılı listedeki tüm düğümleri yazdır
List.displayAllNodes();

Önceden var olan Driver sınıfında yukarıdaki iki kod satırının kullanılması konsolda aşağıdaki çıktıyı üretecektir:

Liste:
2 6 8 10

Bu öğretici makalenin sonuna kadar yaptıysanız, öğrenmiş olacaksınız:

  • Bir düğüm sınıfı nasıl oluşturulur.
  • Bağlantılı bir liste sınıfı nasıl oluşturulur.
  • Önceden tanımlanmış yöntemlerle bağlantılı bir liste sınıfı nasıl doldurulur.
  • Bir sürücü sınıfı nasıl oluşturulur ve istenen sonucu elde etmek için farklı bağlantılı liste yöntemleri nasıl kullanılır.

Bağlantılı liste, verileri depolamak, almak ve silmek için kullanabileceğiniz birçok veri yapısından yalnızca biridir. Başlamak için ihtiyacınız olan her şeye sahip olduğunuza göre, neden bu örnekleri Java'da kendiniz denemiyorsunuz?

PaylaşmakCıvıldamakE-posta
Java'da Dizilerde İşlemler Nasıl Oluşturulur ve Gerçekleştirilir

Java öğrenmek? Dizilerin verilerinizi kolaylıkla işlemesine izin verin.

Sonrakini Oku

İlgili konular
  • Programlama
  • Java
  • Programlama
  • Kodlama İpuçları
Yazar hakkında
Kadeisha Kean (19 Makale Yayınlandı)

Kadeisha Kean, Full-Stack Yazılım Geliştirici ve Teknik/Teknoloji Yazarıdır. En karmaşık teknolojik kavramların bazılarını basitleştirme konusunda belirgin bir yeteneğe sahiptir; her teknoloji acemisinin kolayca anlayabileceği malzeme üretmek. Yazmak, ilginç yazılımlar geliştirmek ve dünyayı gezmek (belgeseller aracılığıyla) konusunda tutkulu.

Kadeisha Kean'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Abone olmak için buraya tıklayın