Rumah > Java > javaTutorial > teks badan

Program Java: Cari elemen dalam senarai pautan bulat

王林
Lepaskan: 2023-09-11 11:45:04
ke hadapan
739 orang telah melayarinya

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;};
Salin selepas log masuk

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);  
   }  
} 
Salin selepas log masuk

Output

Element is not present in the list
Element is present in the list with a position tag: 2
Salin selepas log masuk

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);
   }
} 
Salin selepas log masuk

Output

element is present in the running list
element is not present here, I am sorry!
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!