Java'da Bağlantılı Listeleri Kullanmaya Giriş

Java'da Bağlantılı Listeleri Kullanmaya Giriş

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.





Bağlantılı Liste Nasıl Çalışır?

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.

Java'da Bağlantılı Liste Oluşturma

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.



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.





İlgili: 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:


public class Node {
private int Data;
private Node NextNode;
//constructor
public Node() {
Data = 0;
NextNode = null;
}
//getters and setters
public int getData() {
return Data;
}
public void setData(int data) {
Data = data;
}
public Node getNextNode() {
return NextNode;
}
public void setNextNode(Node 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ı.

Bağlantılı Liste Örneği

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

public class LinkedList {
private Node Head;
//constructor
public LinkedList() {
Head = null;
}
}

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.

İlgili: 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 veri yapısını yığınlar (yalnızca üstten ekleme ve silmeye izin veren) gibi başka bir veri yapısı üzerinde kullanmayı seçmesinin bir nedenidir.

Ö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.

//insert node at front method
public void insertAtFront(int key) {
//create a new node using the node class
Node Temp = new Node();
//check if the Temp node was successfully created
//assign the data that was provides by the user to it
if(Temp != null) {
Temp.setData(key);
Temp.setNextNode(null);

//check if the head of the linked list is empty
//assign the node that was just created to the head position
if(Head == null) {
Head = Temp;
}
//if a node is already at the head position
//add the new node to it and set it as the head
else {
Temp.setNextNode(Head);
Head = Temp;
}
}
}

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.

public class Driver {
//executes the program
public static void main(String[] args) {
//create a new linked list called List
LinkedList List = new LinkedList();
//add each value to the front of the linked list as a new node
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?

oyun incelemeleri oyun dünyasından en iyi haberler

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örüntüle yöntemini kullanmanın bir örneği verilmiştir.

//display all nodes method
public void displayAllNodes() {
//create a new node call Temp and assign it to the head of the linked list
//if the head has a null value then the linked list is empty
Node Temp = Head;
if (Head == null){
System.out.println('The list is empty.');
return;
}
System.out.println('The List:');

while(Temp != null) {
//print the data in each node to the console(starting from the head)
System.out.print(Temp.getData() + ' ');
Temp = 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.

//print the nodes in a linked list
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.

//search for a single node using a key
public boolean findNode(int key) {
//create a new node and place it at the head of the linked list
Node Temp = Head;
//while the current node is not empty
//check if its data matches the key provided by the user
while (Temp != null) {
if (Temp.getData() == key) {
System.out.println('The node is in the list');
return true;
}
//move to the next node
Temp = Temp.getNextNode();
}
//if the key was not found in the linked list
System.out.println('The node is not in the list');
return false;
}

İle DisplayAllNodes yöntemi, olduğunu onayladınız Bağlantılı liste 2'den 10'a kadar 5 çift sayı içerir. 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.

//check if a node is in the linked list
List.findNode(4);

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

The node is in the list

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 key) {
Node Temp = Head;
Node prev = null;
//check if the head node holds the data
//and delete it
if (Temp != null && Temp.getData() == key) {
Head = Temp.getNextNode();
return;
}
//search the other nodes in the list
//and delete it
while (Temp != null) {
if (Temp.getNextNode().getData() == key ) {
prev = Temp.getNextNode().getNextNode();
Temp.setNextNode(prev);
return;
}
Temp = 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.

bilgisayarım neden şarj olmuyor
//delete the node that holds the data 4
List.findAndDelete(4);
//print all nodes in the linked list
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:

The List:
2 6 8 10

Artık Java'da Bağlantılı Listeler Oluşturabilirsiniz

Bu öğretici makalenin sonuna geldiyseniz, öğ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ş Paylaş Cıvıldamak E-posta Java'da Diziler Üzerinde İş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(21 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; herhangi bir teknoloji acemi tarafından kolayca anlaşılabilecek 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