


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)
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. p>
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
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
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);
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!

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Dreamweaver Mac版
Alat pembangunan web visual

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.