Rumah  >  Artikel  >  Java  >  Program Java: Cari elemen dalam senarai pautan bulat

Program Java: Cari elemen dalam senarai pautan bulat

王林
王林ke hadapan
2023-09-11 11:45:04721semak imbas

Program Java: Cari elemen dalam senarai pautan bulat

Apakah itu seperti senarai dan senarai pautan bulat?

Senarai terpaut ialah struktur data di mana setiap nod mengandungi dua bahagian, data dan laluan alamat. Bahagian ini menghala ke nod seterusnya, yang sentiasa mewujudkan interkoneksi dengan nod sebelumnya. Berdasarkan ini, senarai pautan bulat ialah senarai di mana nod terakhir mempunyai pautan dalaman dengan nod pertama, itulah sebabnya senarai terpaut jenis ini dipanggil senarai pautan bulat.

Dalam persekitaran Java, apabila kita mencari elemen dalam senarai pautan bulat, kita perlu mencipta nod sementara dalam senarai terpaut untuk dituju. Dengan cara ini kita masih perlu mengisytiharkan dua pembolehubah. Ia adalah indeks jejak dan carian jejak. Jika nod Temp kosong di titik permulaan, adalah penting untuk melintasi senarai kerana ia tidak mengandungi sebarang item pada ketika ini.

Bagaimanakah senarai terpaut pekeliling berfungsi dan aplikasinya?

Cara senarai pautan bulat berfungsi

Dengan senarai pautan bulat, pengguna boleh memasukkan data di mana-mana sahaja dalam senarai tertentu (dalam tatasusunan yang tidak boleh dilakukan dalam memori bersebelahan). Dalam senarai terpaut ini, data ke belakang disimpan sebagai nod alamat seterusnya. Dengan cara ini, data menunjuk satu sama lain dalam bentuk bulat, membentuk rantai bulat dengan saiz dinamik. Di sini bermakna dinamik; peruntukan memori akan dilakukan mengikut keperluan.

Anda perlu ingat perkara berikut

  • Sebarang nod boleh digunakan sebagai titik permulaan senarai pautan bulat

  • Senarai data boleh dilalui bermula dari mana-mana nod rawak

  • Tiada penunjuk ke nod pertama di sini

Pemakaian senarai pautan pekeliling

  • Senarai terpaut bulat yang digunakan dalam komputer peribadi kami ialah berbilang aplikasi yang melaksanakan tugasnya secara serentak.

  • Digunakan untuk membuat baris gilir bulat.

  • Berbasikal melalui pemain dalam permainan berbilang pemain.

  • Untuk kefungsian Buat asal dalam aplikasi Word atau Photoshop.

Algoritma Senarai Berpaut Pekeliling

Kaedah pelaksanaan dan pengendalian senarai pautan bulat adalah sangat mudah. Terdapat dua ciri, data dan seterusnya. Untuk menentukan senarai pautan bulat lain yang boleh kita gunakan: kepala dan ekor. Nod baharu sentiasa ditakrifkan oleh "nod semasa", yang akan menunjuk ke kepala senarai terpaut. Titik bergerak ke nod seterusnya selepas setiap lelaran.

  • Langkah 1 - Isytiharkan newNode() dengan nilai yang diberikan.

  • Langkah 2 - Cari senarai yang tidak sah.

  • Langkah 3 − Jika hasilnya batal, maka head = newNode().

  • Langkah 4 - Jika tidak, takrifkan penunjuk nod sebagai temp dan mulakannya.

Sintaks senarai pautan bulat

struct Node {int dataset; struct Node * to next;};

Dalam sintaks ini, setiap nod yang terdapat dalam senarai mempunyai bahagian data dan penunjuk yang digunakan untuk mencipta nod baharu apabila input baharu diterima.

Kita boleh mencari elemen dalam senarai tertentu menggunakan kaedah berikut -

  • Dengan menambahkan data baharu pada senarai tertentu

  • Dengan mencari elemen dalam senarai pautan bulat tertentu

Dengan menambahkan data baharu pada senarai terpaut tertentu

Menambah beberapa elemen baharu dalam nod baharu membantu mengetahui beberapa data khusus daripada senarai pautan bulat. Pertama, anda perlu memasukkan nod baharu ke dalam memori yang diperuntukkan. Selepas data baharu disimpan, data seterusnya boleh ditukar kepada nod baharu. Anda juga boleh menyimpan data tambahan di hujung nod dan menggunakan traversal.

Contoh

public class SearchNodearb {   
   public class Nodefind{  
      int datafall;  
      Nodefind next;  
      public Nodefind(int datafall) {  
         this.datafall = datafall;  
      }  
   }  
   public Nodefind head = null;  
   public Nodefind tail = null;  
   public void add(int datafall){   
      Nodefind newNode1 = new Nodefind(datafall);      
      if(head == null) {        
         head = newNode1;  
         tail = newNode1;  
         newNode1.next = head;  
      }  
      else {     
         tail.next = newNode1;
            
         tail = newNode1;         
         tail.next = head;  
      }  
   }  
   public void search(int element) {  
      Nodefind current = head;  
      int i = 1;  
      boolean flagon = false;  
              
      if(head == null) {  
         System.out.println("List is totally Void! So Sad!");  
      }  
      else {  
         do{  
            if(current.datafall ==  element) {  
               flagon = true;  
               break;  
            }  
            current = current.next;  
            i++;  
         }while(current != head);  
         if(flagon)  
         System.out.println("Element is present in the list with a position tag : " + i);  
         else  
         System.out.println("Element is not present in the list");  
      }  
   }  
   public static void main(String[] args) {  
      SearchNodearb cl1 = new SearchNodearb();            
      cl1.add(1000);  
      cl1.add(5000);  
      cl1.add(3);  
      cl1.add(4);  
      cl1.search(2);  
      cl1.search(5000);  
   }  
} 

Output

Element is not present in the list
Element is present in the list with a position tag: 2

Dengan mencari elemen dalam senarai pautan bulat tertentu

Mula-mula, anda perlu memulakan nod, kemudian membilang f=0. Jika kedudukan kepala kosong, keseluruhan senarai kosong. Jika tidak, ulangi senarai lengkap. Jika output adalah sifar, elemen itu tidak ditemui dalam senarai.

Contoh

public class search {
   class Nodeval {
      int data;
      Nodeval next;
      public Nodeval(int data) { this.data = data; }
   }
   public Nodeval head = null;
   public Nodeval tempo = null;
   public void addNode2001(int data){
      Nodeval new10 = new Nodeval(data);
      if (head == null) {
         head = new10;
      }
      else {
         tempo.next = new10;
      }
      tempo = new10;
      tempo.next = head;
   }
   public void find(int key){
      Nodeval temp07 = head;     
      int f = 0;
      if (head == null) {
         System.out.println("List is empty, Please Fill It ASAP");
      }
      else {
         do {
            if (temp07.data == key) {
               System.out.println(
               "element is present in the running list");
               f = 1;
               break;
            }
            temp07 = temp07.next;
         } while (temp07 != head);
         if (f == 0) {
            System.out.println(
            "element is not present here, I am sorry!");
         }
      }
   }
   public static void main(String[] args){
      search srdd = new search();
      srdd.addNode2001(5);
      srdd.addNode2001(4);
      srdd.addNode2001(3);
      srdd.addNode2001(2);
      srdd.find(2);
      srdd.find(6);
   }
} 

Output

element is present in the running list
element is not present here, I am sorry!

Kesimpulan

Terdapat banyak kelebihan dan kekurangan menggunakan senarai pautan bulat. Kelebihan yang paling penting ialah operasi traversal boleh dimulakan dari mana-mana nod dalam senarai terpaut. Tidak perlu menggunakan NULL, sangat berguna untuk penjadualan kitaran CPU. Tetapi kelemahan terbesar ialah jika senarai itu tidak ditulis dengan cara pemprograman yang betul, ia boleh bertukar menjadi gelung tak terhingga dan pelayan boleh digantung. Melalui artikel ini, kami mempelajari cara mencari elemen dalam senarai terpaut bulat menggunakan Java.

Atas ialah kandungan terperinci Program Java: Cari elemen dalam senarai pautan bulat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam