Jadual Kandungan
Struktur senarai terpaut
Contoh
Penyelesaian masalah
Putar senarai terpaut satu demi satu
Kerumitan masa dan ruang
Putar senarai pautan sekali
Kesimpulan
Rumah hujung hadapan web tutorial js Program JavaScript untuk memutar senarai terpaut mengikut arah jam

Program JavaScript untuk memutar senarai terpaut mengikut arah jam

Aug 25, 2023 am 11:37 AM

Program JavaScript untuk memutar senarai terpaut mengikut arah jam

Struktur asas senarai terpaut dalam JavaScript boleh dibuat menggunakan kelas dalam JavaScript dan kemudian nod boleh dialihkan dari satu kedudukan ke kedudukan lain untuk penggiliran. Dalam artikel ini, kita akan belajar cara memutar senarai terpaut mengikut arah jam dalam bahasa pengaturcaraan JavaScript. Kita akan melihat kod untuk pemahaman yang lebih mendalam tentang konsep ini.

Dalam masalah yang diberikan, kami diberi senarai pautan dan kami perlu memutarkannya mengikut arah jam. Ini bermakna, kita perlu meletakkan elemen terakhir dahulu dalam setiap langkah, jika kita perlu memutar k kali, maka kita perlu meletakkan elemen terakhir sebelum kepala atau nod permulaan senarai pautan. Untuk membuat senarai terpaut yang kita lihat sebelum ini, kita memerlukan kelas untuk mengikat data dan penunjuk ke elemen seterusnya.

Struktur senarai terpaut

Contoh

Pertama, kami akan mencipta nod kelas yang akan menyimpan nilai nod semasa dan penunjuk ke nod seterusnya. Selepas itu, kami akan mencipta fungsi tolak untuk membantu mencipta senarai terpaut, dan akhirnya, kami akan mencipta fungsi paparan untuk membantu mencetak senarai terpaut. Jom tengok kod dulu -

// creating the class for the linked list
class Node{
   // defining the constructor for class
   constructor(){
      this.next = null; // pointer to hold the next value 
      this.value = 0; // curent value in the linked list 
   }
}
// defining push function for linked list 
function push(head,data){
   var new_node = new Node();
   new_node.value = data;
   if(head == null){
      return new_node;
   }
   var temp = head;
   while(temp.next != null){
      temp = temp.next;
   }
   temp.next = new_node;
   return head;
}
function display(head){
   var temp = head;
   var values = 0;
   while(temp){   
      values = values + temp.value + " -> ";
      temp = temp.next;
   }
   console.log(values + "null")
}
var head = null;
for(var i = 1;i<6;i++){
   head = push(head,i);
}
display(head)
Salin selepas log masuk

Dalam kod di atas, kami telah mencipta kelas menggunakan kata kunci kelas dan mencipta bahagian menggunakan kata kunci "ini" untuk menyimpan data dan penunjuk ke nod seterusnya dalam pembina kelas.

Selepas itu, kami mentakrifkan fungsi tolak yang akan mengambil dua parameter, parameter pertama ialah ketua senarai terpaut, dan parameter kedua ialah data nod baharu yang ingin kami tambahkan pada senarai terpaut. Dalam fungsi, kami mencipta nod baharu dan menyimpan nilai di dalamnya. Kami menyemak sama ada kepala kosong (yang bermaksud kami akan menambah elemen pertama) dan kemudian kami hanya akan mengembalikan nod baharu, jika tidak menggunakan gelung kami akan pergi ke penghujung senarai terpaut dan menambah nod baharu di sana.

Penyelesaian masalah

Selepas mencipta kelas dan mentakrifkan fungsi asas yang diperlukan, kami akan beralih ke fungsi utama di mana kami akan mentakrifkan fungsi yang menggerakkan elemen k terakhir ke hadapan senarai terpaut, yang mewakili putaran senarai terpaut. Terdapat dua cara untuk menambahkan elemen k terakhir pada elemen pertama, yang bersamaan dengan putaran kanan senarai terpaut, cth. -

Kami diberi senarai pautan: 1 -> 2 -> 3 -> 4 -> 5 ->null

Kami mahu memutar pautan yang disenaraikan sekali mengikut arah jam supaya kelihatan seperti ini -

5 -> 1 -> 2 -> 3 -> 4 -> null
Salin selepas log masuk

Begitu juga, untuk 3 putaran senarai terpaut, senarai terpaut akan kelihatan seperti ini -

Initially Linked list: 1 -> 2 -> 3 -> 4 -> 5 -> null
After the first rotation: 5 -> 1 -> 2 -> 3 -> 4 -> null
After the second rotation: 4 -> 5 -> 1 -> 2 -> 3 -> null
After the third rotation: 3 -> 4 -> 5 -> 1 -> 2 -> null
Salin selepas log masuk

Kami mempunyai dua cara untuk menambah elemen terakhir di hadapan senarai terpaut, sama ada satu demi satu atau sekaligus.

Putar senarai terpaut satu demi satu

Contoh

Dalam kaedah ini kita akan pergi ke nod terakhir dan kemudian mengalihkannya ke nod kepala sebelumnya dan mengemas kini nod kepala. Mari lihat kod dahulu -

// creating the class for linked list
class Node{
   // defining the constructor for class
   constructor(){
      this.next = null; // pointer to hold the next value 
      this.value = 0; // curent value in the linked list 
   }
}
// defining push function for linked list 
function push(head,data){
   var new_node = new Node();
   new_node.value = data;
   if(head == null){
      return new_node;
   }
   var temp = head;
   while(temp.next != null){
      temp = temp.next;
   }
   temp.next = new_node;
   return head;
}

function display(head){
   var temp = head;
   var values = 0
   while(temp){
      values =  values + temp.value + " -> ";
      temp = temp.next;
   }
   console.log(values + "null")
}
function rotate(head, k){
   while(k--){
      var temp = head;
      while(temp.next.next != null){
         temp = temp.next;
      }
      var new_head = temp.next;
      temp.next = null;
      new_head.next = head;
      head = new_head;
   }
   return head;
}
var head = null;
for(var i = 1;i<6;i++){
   head = push(head,i);
}
head = rotate(head,3);
display(head);
Salin selepas log masuk

Dalam kod di atas, kami menggunakan kod senarai terpaut fungsi asas yang ditakrifkan di atas dan hanya menambah fungsi baharu untuk memutar senarai terpaut.

Dalam putaran fungsi, kami mula-mula melintasi senarai terpaut k kali menggunakan gelung sementara, dan dalam setiap lelaran, kami mencapai elemen kedua terakhir senarai terpaut. Kemudian kami mengalih keluar elemen terakhir senarai terpaut daripada senarai terpaut dan meletakkannya di hadapan kepala senarai terpaut. Akhir sekali, kami mengembalikan pengepala baharu dan memaparkan senarai terpaut baharu menggunakan fungsi paparan.

Kerumitan masa dan ruang

Kami telah mengalihkan senarai terpaut k kali, dan saiz senarai terpaut ialah N, jadi kerumitan masa keseluruhan program ialah O(N*K). Selain itu, kami tidak menggunakan sebarang ruang tambahan, jadi kerumitan ruang program ialah O(1), iaitu pemalar.

Putar senarai pautan sekali

Dalam kod sebelumnya, kami menambah elemen satu demi satu, yang mengambil masa O(N*N), supaya kami boleh mengalihkan senarai terpaut dengan lebih baik dan mendapatkan saiz senarai terpaut. Selepas itu, kami akan melintasi senarai terpaut sekali lagi dan mendapatkan elemen k terakhir dan menambahkannya ke hadapan senarai terpaut, yang akan menjadikan kerumitan masa program O(1).

Kesimpulan

Dalam tutorial ini, kami mempelajari cara memutar senarai terpaut mengikut arah jam dalam bahasa pengaturcaraan JavaScript. Kami telah melihat kod untuk memahami konsep secara mendalam. Struktur asas senarai terpaut dalam JavaScript boleh dibuat menggunakan kelas dalam JavaScript, dan nod kemudiannya boleh dialihkan dari satu kedudukan ke kedudukan lain untuk penggiliran. Kerumitan masa program ialah O(N*N), yang boleh dipertingkatkan lagi kepada O(N), manakala kerumitan ruang program ialah O(1).

Atas ialah kandungan terperinci Program JavaScript untuk memutar senarai terpaut mengikut arah jam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ganti aksara rentetan dalam javascript Ganti aksara rentetan dalam javascript Mar 11, 2025 am 12:07 AM

Penjelasan terperinci mengenai kaedah penggantian rentetan javascript dan Soalan Lazim Artikel ini akan meneroka dua cara untuk menggantikan watak rentetan dalam JavaScript: Kod JavaScript dalaman dan HTML dalaman untuk laman web. Ganti rentetan di dalam kod JavaScript Cara yang paling langsung ialah menggunakan kaedah pengganti (): str = str.replace ("cari", "ganti"); Kaedah ini hanya menggantikan perlawanan pertama. Untuk menggantikan semua perlawanan, gunakan ungkapan biasa dan tambahkan bendera global g: str = str.replace (/fi

Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri? Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri? Mar 18, 2025 pm 03:12 PM

Artikel membincangkan membuat, menerbitkan, dan mengekalkan perpustakaan JavaScript, memberi tumpuan kepada perancangan, pembangunan, ujian, dokumentasi, dan strategi promosi.

Bagaimanakah saya mengoptimumkan kod JavaScript untuk prestasi dalam penyemak imbas? Bagaimanakah saya mengoptimumkan kod JavaScript untuk prestasi dalam penyemak imbas? Mar 18, 2025 pm 03:14 PM

Artikel ini membincangkan strategi untuk mengoptimumkan prestasi JavaScript dalam pelayar, memberi tumpuan kepada mengurangkan masa pelaksanaan dan meminimumkan kesan pada kelajuan beban halaman.

Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apr 04, 2025 pm 02:42 PM

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

Bagaimanakah saya boleh debug kod javascript dengan berkesan menggunakan alat pemaju pelayar? Bagaimanakah saya boleh debug kod javascript dengan berkesan menggunakan alat pemaju pelayar? Mar 18, 2025 pm 03:16 PM

Artikel ini membincangkan debugging JavaScript yang berkesan menggunakan alat pemaju pelayar, memberi tumpuan kepada menetapkan titik putus, menggunakan konsol, dan menganalisis prestasi.

10 cara untuk meningkatkan prestasi jQuery anda dengan serta -merta 10 cara untuk meningkatkan prestasi jQuery anda dengan serta -merta Mar 11, 2025 am 12:15 AM

Artikel ini menggariskan sepuluh langkah mudah untuk meningkatkan prestasi skrip anda dengan ketara. Teknik -teknik ini adalah mudah dan boleh digunakan untuk semua tahap kemahiran. Tetap dikemas kini: Gunakan pengurus pakej seperti npm dengan bundler seperti Vite untuk memastikan

Menggunakan pasport dengan sekuel dan mysql Menggunakan pasport dengan sekuel dan mysql Mar 11, 2025 am 11:04 AM

Sequelize adalah node.js Orm berasaskan janji. Ia boleh digunakan dengan PostgreSQL, MySQL, MariaDB, SQLite, dan MSSQL. Dalam tutorial ini, kami akan melaksanakan pengesahan untuk pengguna aplikasi web. Dan kami akan menggunakan Pasport, Pengesahan Middlew Popular

Cara Membina Slider JQuery Mudah Cara Membina Slider JQuery Mudah Mar 11, 2025 am 12:19 AM

Artikel ini akan membimbing anda untuk membuat karusel gambar mudah menggunakan perpustakaan jQuery. Kami akan menggunakan perpustakaan BXSlider, yang dibina di atas jQuery dan menyediakan banyak pilihan konfigurasi untuk menubuhkan karusel. Pada masa kini, Gambar Carousel telah menjadi ciri yang mesti ada di laman web - satu gambar lebih baik daripada seribu perkataan! Selepas membuat keputusan untuk menggunakan karusel gambar, soalan seterusnya adalah bagaimana untuk menciptanya. Pertama, anda perlu mengumpul gambar-gambar resolusi tinggi yang berkualiti tinggi. Seterusnya, anda perlu membuat karusel gambar menggunakan HTML dan beberapa kod JavaScript. Terdapat banyak perpustakaan di web yang dapat membantu anda membuat karusel dengan cara yang berbeza. Kami akan menggunakan Perpustakaan BXSlider Sumber Terbuka. Perpustakaan BXSlider menyokong reka bentuk responsif, jadi karusel yang dibina dengan perpustakaan ini dapat disesuaikan dengan mana -mana

See all articles