Rumah  >  Artikel  >  Java  >  Senarai Berkaitan Berganda Java

Senarai Berkaitan Berganda Java

WBOY
WBOYasal
2024-08-30 16:22:58941semak imbas

Java Doubly Linked List ialah sejenis Senarai Terpaut di mana setiap nod selain daripada menyimpan data mempunyai dua pautan. Pautan pertama menghala ke nod sebelumnya dan pautan lain menghala ke nod seterusnya dalam senarai. Senarai Pautan Berganda, juga disingkatkan sebagai DLL adalah seperti Senarai Pautan Tunggal. Kedua-dua senarai Terpaut mengandungi penuding ke nod seterusnya dan medan data untuk mewakili nilai sebenar yang akan disimpan dalam nod. Perbezaan utama ialah DLL mengandungi penunjuk ke nod sebelumnya dalam senarai iaitu nod dalam DLL menyedari kedua-dua nod sebelumnya dan seterusnya. Dalam artikel ini, kita akan melihat Senarai Berganda Berkaitan di Java, meneroka beberapa contoh dan mengetahui Pelaksanaannya.

IKLAN Kursus Popular dalam kategori ini JAVA MASTERY - Pengkhususan | 78 Siri Kursus | 15 Ujian Olok-olok

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Sintaks

Tiada sintaks tertentu untuk senarai Doubly Linked di Java, tetapi kita akan melihat Cara mengisytiharkan Doubly Linked List di Java. Sebelum melihat pengisytiharan Senarai Berganda Berkait, mari kita lihat Konsep di sebalik pelaksanaan Senarai Berganda Berganda.

Nod dalam Senarai Berganda Berpaut:

Prev Node Data Next Node
Nod Sebelumnya
Data Nod Seterusnya

Di sini Nod Sebelum dan Nod Seterusnya masing-masing adalah penunjuk kepada elemen nod sebelumnya dan seterusnya. ‘Data’ ialah elemen sebenar tempat data disimpan.

Di bawah adalah beberapa istilah penting yang perlu kita fahami,

  • Sebelumnya: Setiap pautan senarai terpaut mempunyai pautan ke nod sebelumnya yang dipanggil Sebelum.
  • Seterusnya: Setiap pautan senarai terpaut mempunyai pautan ke nod seterusnya yang dipanggil Seterusnya
  • Pautan: Setiap pautan senarai terpaut boleh menyimpan data, dikenali sebagai elemen.
  • Terpaut Senarai: Ia mengandungi pautan sambungan ke pautan pertama dan pautan terakhir.

Algoritma

  • Tentukan kelas Nod yang mewakili nod dalam senarai terpaut. Ia sepatutnya mempunyai 3 sifat iaitu nod sebelumnya, data dan nod seterusnya
  • Tentukan kelas lain untuk mencipta Senarai Berganda dengan dua nod iaitu kepala dan ekor. Pada mulanya, nilai ini akan menjadi batal.
  • Buat fungsi untuk menambah nod dalam senarai terpaut,
  • Ia akan menyemak terlebih dahulu sama ada kepala adalah batal dan kemudian memasukkan nod sebagai kepala.
  • Kedua-dua kepala dan ekor kemudiannya akan menghala ke nod baharu.
  • Jika ekor bukan nol, nod baharu akan disisipkan pada penghujung senarai sedemikian rupa sehingga penunjuk nod baharu akan menghala ke ekor.
  • Oleh itu, nod baharu akan menjadi ekor baharu.

Pengisytiharan Nod untuk Senarai Berganda Di Jawa:

class Node {
public int data;
public Node prev;
public Node next;
public void displayData() {
//content of the function}
}

Seperti yang kita lihat terdapat pengisytiharan tambahan atau rujukan (Nod prev) dalam kes Senarai Berganda Berganda.

Kendalian Asas Senarai Berganda Berkaitan

Di bawah ialah operasi asas yang tersedia untuk Senarai Berganda,

  • Sisipan: Menambah elemen pada permulaan senarai terpaut
  • Pemadaman: Memadamkan elemen pada permulaan senarai terpaut
  • Sisipkan Selepas: Menambah elemen selepas item senarai terpaut
  • Sisipkan Terakhir: Menambah elemen pada penghujung senarai terpaut
  • Padam Terakhir: Memadamkan elemen pada penghujung senarai terpaut
  • Padam: Memadamkan elemen daripada senarai terpaut menggunakan kekunci.
  • Paparkan ke hadapan: Memaparkan senarai lengkap dengan cara hadapan
  • Paparkan ke belakang: Memaparkan senarai lengkap secara ke belakang

Contoh Senarai Pautan Berganda Java

Di bawah ialah contoh berbeza bagi Senarai Berganda Berganda Java:

Contoh #1: Pengisytiharan Nod dan Menambah nod pada Paparan

Kod:

public class DLL {
class Node{
public int data;
public Node prevNode;
public Node nextNode;
public Node(int data) {
this.data = data;
}
}
Node headNode, tailNode = null;
public void addDLLNode(int data) {
Node newDLLNode = new Node(data);
if(headNode == null) {
headNode = tailNode = newDLLNode;
headNode.prevNode = null;
tailNode.nextNode = null;
}
else {
tailNode.nextNode = newDLLNode;
newDLLNode.prevNode = tailNode;
tailNode = newDLLNode;
tailNode.nextNode = null;
}
}
public void displayNode() {
Node currentNode = headNode;
if(headNode == null) {
System.out.println("Doubly Linked List is empty");
return;
}
System.out.println("Nodes in Doubly Linked List: ");
while(currentNode != null) {
System.out.print(currentNode.data + " ");
currentNode = currentNode.nextNode;
}
}
public static void main(String[] args) {
DLL dLinkedList = new DLL();
dLinkedList.addDLLNode(9);
dLinkedList.addDLLNode(7);
dLinkedList.addDLLNode(5);
dLinkedList.addDLLNode(3);
dLinkedList.addDLLNode(1);
dLinkedList.addDLLNode(3);
dLinkedList.addDLLNode(5);
dLinkedList.addDLLNode(7);
dLinkedList.displayNode();
}
}

Output:

Senarai Berkaitan Berganda Java

Jadi di sini kami mencipta kelas Node untuk mengisytiharkan senarai Berganda Berpaut dan memaparkan nilai DLL.

Contoh #2: Padam pada permulaan senarai terpaut dan paparan

Kod:

public class DLL {
class Node{
public int data;
public Node prevNode;
public Node nextNode;
public Node(int data) {
this.data = data;
}
}
public void displayNode() {
Node tempNode = headNode;
while (tempNode != null) {
System.out.print(tempNode.data + "–>");
tempNode = tempNode.nextNode;
}
System.out.println("END");
}
Node headNode, tailNode = null;
public void addNode(int data) {
Node newNode = new Node(data);
if(headNode == null) {
headNode = tailNode = newNode;
headNode.prevNode = null;
tailNode.nextNode = null;
}
else {
tailNode.nextNode = newNode;
newNode.prevNode = tailNode;
tailNode = newNode;
tailNode.nextNode = null;
}
}
public void deleteInitialNode() {
if(headNode == null) {
System.out.println("Doubly Linked List is empty");
return;
}
else {
if(headNode != tailNode) {
headNode = headNode.nextNode;
}
else {
headNode = tailNode = null;
}
}
}
void printNode() {
Node currNode = headNode;
if(headNode == null) {
System.out.println("Doubly Linked List is empty");
return;
}
while(currNode != null)
{
System.out.print(currNode.data + " ");
currNode = currNode.nextNode;
}
System.out.println();
}
public static void main(String[] args) {
DLL doublyLL = new DLL();
doublyLL.addNode(3);
doublyLL.addNode(5);
doublyLL.addNode(7);
doublyLL.addNode(9);
doublyLL.addNode(11);
System.out.println("Doubly linked list: ");
doublyLL.printNode();
doublyLL.addNode(15);
doublyLL.addNode(17);
doublyLL.addNode(19);
doublyLL.deleteInitialNode();
doublyLL.addNode(21);
System.out.println("Doubly Linked List after deleting at the beginning: ");
doublyLL.printNode();
}
}

Output:

Senarai Berkaitan Berganda Java

Jadi di sini, nod dipadamkan pada permulaan senarai terpaut iaitu Nod 3 dipadam/ dialih keluar.

DLL boleh dilalui dalam arah ke hadapan dan ke belakang. Operasi padam dalam DLL boleh menjadi lebih cekap jika penunjuk nod yang akan dipadam diberikan. Setiap Nod dalam DLL memerlukan ruang tambahan untuk penunjuk sebelumnya. Semua operasi memerlukan penunjuk tambahan untuk dikekalkan.

Dengan ini, kami akan menyimpulkan topik kami "Senarai Berganda Berganda Java". Kami telah melihat Apakah Java Doubly Linked List dan bagaimana ia dilaksanakan dalam pengaturcaraan Java dengan beberapa contoh. Kami juga telah melihat Algoritma untuk Senarai Berganda Berganda dan telah menyenaraikan beberapa operasi yang boleh digunakan untuk DLL. Kami telah melaksanakan Sisipan dan padam pada operasi pertama, begitu juga, terdapat operasi lain juga tersedia yang boleh anda kerjakan.

Atas ialah kandungan terperinci Senarai Berkaitan Berganda Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Inorder Traversal JavaArtikel seterusnya:Inorder Traversal Java