Rumah hujung hadapan web tutorial js Penjelasan terperinci tentang senarai struktur data Javascript dan kemahiran algoritma_javascript

Penjelasan terperinci tentang senarai struktur data Javascript dan kemahiran algoritma_javascript

May 16, 2016 pm 04:10 PM
javascript senarai struktur data algoritma

Kata Pengantar: Dalam kehidupan seharian, orang sering menggunakan senarai Sebagai contoh, apabila kita kadang-kadang pergi membeli-belah, untuk membeli semua barang, kita boleh membuat senarai barang yang ingin dibeli sebelum pergi senarai yang kita gunakan atau semasa kita di sekolah semasa kita masih muda, selepas setiap peperiksaan, sekolah akan menyenaraikan kedudukan dan transkrip sepuluh pelajar terbaik yang mendapat markah dalam peperiksaan, dan sebagainya . Kami juga menggunakan senarai dalam komputer kami, jadi di manakah senarai yang sesuai untuk digunakan? Di manakah ia tidak sesuai untuk digunakan?

Sesuai untuk digunakan: Apabila tidak terdapat banyak elemen dalam senarai, anda boleh menggunakan senarai itu, kerana kecekapan adalah sangat tinggi apabila mencari atau menyusun elemen dalam senarai sebaliknya: Jika terdapat banyak elemen dalam senarai, maka Senarai tidak lagi sesuai.

1: Takrif jenis data abstrak senarai

Untuk mereka bentuk jenis data abstrak senarai, kami perlu memberikan takrif senarai, termasuk atribut yang perlu ada pada senarai, operasi yang perlu dilakukan pada senarai, dsb.

Senarai ialah set data yang tersusun. Item data dalam setiap senarai dipanggil elemen. Dalam JavaScript, elemen dalam senarai boleh terdiri daripada sebarang jenis data. Tiada persetujuan terdahulu tentang berapa banyak elemen boleh disimpan dalam senarai. Walau bagaimanapun, bilangan elemen dihadkan oleh memori program dalam penggunaan sebenar.

Sekarang kami ingin mereka bentuk senarai, kemudian kami boleh memikirkan tentang melaksanakan senarai dan atribut dan kaedah yang harus terkandung di dalamnya. Sudah tentu, reka bentuk berikut saya berdasarkan demo dalam buku "Struktur dan Algoritma Javascript". Setakat ini kita boleh belajar bagaimana mereka bentuk kelas abstrak kita sendiri sebagai rujukan apabila kita menulis program pada masa hadapan Perkara yang paling penting bagi kita untuk mengkaji demo dalam buku sekarang ialah mempelajari idea reka bentuk mereka dan cara menulis kod. Mereka mempunyai atribut berikut;

1. listSize (atribut): Gunakan pembolehubah listSize untuk menyimpan bilangan elemen dalam senarai.

2. pos (atribut): Kedudukan semasa senarai, indeks elemen.
3. DataStore (atribut): Mulakan tatasusunan kosong untuk menyimpan bilangan elemen. Jika kita ingin mendapatkan elemen tertentu dalam senarai, kita boleh menggunakan atribut pos di atas seperti dataStore[pos];

Semua kaedah; dijelaskan dalam senarai berikut, tidak diperkenalkan satu persatu.

2: Bagaimana untuk melaksanakan kelas senarai

Mengikut jenis data abstrak senarai yang ditakrifkan di atas, kita boleh melaksanakan kelas Senarai berikut melalui mod prototaip pembina seperti berikut.


Salin kod Kod adalah seperti berikut:

function List() {
// Bilangan elemen dalam senarai
This.listSize = 0;

// Apakah kedudukan semasa senarai
This.pos = 0;

// Mulakan tatasusunan kosong untuk menyimpan elemen senarai
This.dataStore = [];

}

List.prototype = {
 
//Tambah elemen pada penghujung senarai
tambahkan: fungsi(elemen) {
      var self = ini;
           self.dataStore[this.listSize] = elemen;
},

// Alih keluar elemen daripada senarai
Alih keluar: fungsi(elemen) {
      var self = ini;
      var curIndex = self.find(elemen);
Jika(curIndex > -1) {
                 self.dataStore.splice(curIndex,1);
​​​​​​—self.listSize;
             kembali benar;
}
         kembali palsu;
},

// Cari elemen dalam senarai dan kembalikan indeks
Cari: fungsi(elemen) {
      var self = ini;
for(var i = 0,dataLen = self.dataStore.length; i < dataLen; i ) {
If(self.dataStore[i] == elemen) {
                   kembalikan i;
            }
}
         kembali -1;
},
 
// Kembalikan bilangan elemen dalam senarai
panjang: function() {
          kembalikan this.listSize;
},

// Paparkan elemen dalam senarai
toString: function(){
          kembalikan this.dataStore;
},

/*
* Masukkan elemen selepas elemen yang ditentukan
* elemen semasa elemen @param
* @param elementAfter Masukkan elemen semasa selepas elemen ini
*/
​ masukkan: fungsi(elemen,elemenSelepas){
      var self = ini;
        var insertPos = self.find(elementAfter);
Jika(masukkanPos > -1) {
                 self.dataStore.splice(insertPos 1,0,element);
                self.listSize;
             kembali benar;
}
         kembali palsu;
},
 
// Kosongkan semua elemen dalam senarai
Jelas: function() {
          padamkan ini.dataStore;
This.dataStore = [];
This.listSize = this.pos = 0;
},
// Tentukan sama ada elemen yang diberikan berada dalam senarai
mengandungi: fungsi(elemen) {
      var self = ini;
for(var i = 0,ilen = self.dataStore.length; i < ilen; i ) {
If(self.dataStore[i] == elemen) {
                   kembali benar;
            }
}
         kembali palsu;
},
// Alihkan elemen semasa dalam senarai ke kedudukan pertama
Hadapan: function(){
This.pos = 0;
},
// Alihkan elemen semasa dalam senarai ke kedudukan terakhir
Tamat: function(){
This.pos = this.listSize - 1;
},
// Alihkan kedudukan semasa ke belakang satu kedudukan
Sebelumnya: function(){
Jika(this.pos > 0) {
​​​​​​—ini.pos;
}
},
// Gerakkan kedudukan semasa ke hadapan satu kedudukan
Seterusnya: function(){
If(this.pos < this.listSize - 1) {
This.pos;
}
},
// Kembalikan kedudukan semasa senarai
CurPos: function(){
         kembalikan ini.pos;
},
//Alihkan kedudukan semasa ke kedudukan yang ditentukan
MoveTo: fungsi(n) {
This.pos = n;
},
// Kembalikan elemen pada kedudukan semasa
GetElement:function(){
          kembalikan this.dataStore[this.pos];
}
};

Seperti di atas: Laksanakan kelas senarai, termasuk seberapa banyak kaedah seperti di atas Sudah tentu, kita juga boleh melanjutkan beberapa kaedah lain untuk memperkayakan pelaksanaan kelas senarai Perkara yang paling penting ialah mempelajari kaedah pengekodan di atas.

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

Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
1 bulan 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)

Melaksanakan Algoritma Pembelajaran Mesin dalam C++: Cabaran dan Penyelesaian Biasa Melaksanakan Algoritma Pembelajaran Mesin dalam C++: Cabaran dan Penyelesaian Biasa Jun 03, 2024 pm 01:25 PM

Cabaran biasa yang dihadapi oleh algoritma pembelajaran mesin dalam C++ termasuk pengurusan memori, multi-threading, pengoptimuman prestasi dan kebolehselenggaraan. Penyelesaian termasuk menggunakan penunjuk pintar, perpustakaan benang moden, arahan SIMD dan perpustakaan pihak ketiga, serta mengikuti garis panduan gaya pengekodan dan menggunakan alat automasi. Kes praktikal menunjukkan cara menggunakan perpustakaan Eigen untuk melaksanakan algoritma regresi linear, mengurus memori dengan berkesan dan menggunakan operasi matriks berprestasi tinggi.

Terokai prinsip asas dan pemilihan algoritma bagi fungsi isihan C++ Terokai prinsip asas dan pemilihan algoritma bagi fungsi isihan C++ Apr 02, 2024 pm 05:36 PM

Lapisan bawah fungsi C++ sort menggunakan isihan gabungan, kerumitannya ialah O(nlogn), dan menyediakan pilihan algoritma pengisihan yang berbeza, termasuk isihan pantas, isihan timbunan dan isihan stabil.

Bandingkan struktur data kompleks menggunakan perbandingan fungsi Java Bandingkan struktur data kompleks menggunakan perbandingan fungsi Java Apr 19, 2024 pm 10:24 PM

Apabila menggunakan struktur data kompleks dalam Java, Comparator digunakan untuk menyediakan mekanisme perbandingan yang fleksibel. Langkah-langkah khusus termasuk: mentakrifkan kelas pembanding, menulis semula kaedah bandingkan untuk menentukan logik perbandingan. Buat contoh pembanding. Gunakan kaedah Collections.sort, menghantar contoh koleksi dan pembanding.

Algoritma pengesanan yang dipertingkatkan: untuk pengesanan sasaran dalam imej penderiaan jauh optik resolusi tinggi Algoritma pengesanan yang dipertingkatkan: untuk pengesanan sasaran dalam imej penderiaan jauh optik resolusi tinggi Jun 06, 2024 pm 12:33 PM

01Garis prospek Pada masa ini, sukar untuk mencapai keseimbangan yang sesuai antara kecekapan pengesanan dan hasil pengesanan. Kami telah membangunkan algoritma YOLOv5 yang dipertingkatkan untuk pengesanan sasaran dalam imej penderiaan jauh optik resolusi tinggi, menggunakan piramid ciri berbilang lapisan, strategi kepala pengesanan berbilang dan modul perhatian hibrid untuk meningkatkan kesan rangkaian pengesanan sasaran dalam imej penderiaan jauh optik. Menurut set data SIMD, peta algoritma baharu adalah 2.2% lebih baik daripada YOLOv5 dan 8.48% lebih baik daripada YOLOX, mencapai keseimbangan yang lebih baik antara hasil pengesanan dan kelajuan. 02 Latar Belakang & Motivasi Dengan perkembangan pesat teknologi penderiaan jauh, imej penderiaan jauh optik resolusi tinggi telah digunakan untuk menggambarkan banyak objek di permukaan bumi, termasuk pesawat, kereta, bangunan, dll. Pengesanan objek dalam tafsiran imej penderiaan jauh

Aplikasi algoritma dalam pembinaan 58 platform potret Aplikasi algoritma dalam pembinaan 58 platform potret May 09, 2024 am 09:01 AM

1. Latar Belakang Pembinaan 58 Portrait Platform Pertama sekali, saya ingin berkongsi dengan anda latar belakang pembinaan 58 Portrait Platform. 1. Pemikiran tradisional platform pemprofilan tradisional tidak lagi mencukupi Membina platform pemprofilan pengguna bergantung pada keupayaan pemodelan gudang data untuk menyepadukan data daripada pelbagai barisan perniagaan untuk membina potret pengguna yang tepat untuk memahami tingkah laku, minat pengguna dan keperluan, dan menyediakan keupayaan sampingan, akhirnya, ia juga perlu mempunyai keupayaan platform data untuk menyimpan, bertanya dan berkongsi data profil pengguna dan menyediakan perkhidmatan profil dengan cekap. Perbezaan utama antara platform pemprofilan perniagaan binaan sendiri dan platform pemprofilan pejabat pertengahan ialah platform pemprofilan binaan sendiri menyediakan satu barisan perniagaan dan boleh disesuaikan atas permintaan platform pertengahan pejabat berkhidmat berbilang barisan perniagaan, mempunyai kompleks pemodelan, dan menyediakan lebih banyak keupayaan umum. 2.58 Potret pengguna latar belakang pembinaan potret di platform tengah 58

Struktur dan algoritma data Java: penjelasan mendalam Struktur dan algoritma data Java: penjelasan mendalam May 08, 2024 pm 10:12 PM

Struktur data dan algoritma ialah asas pembangunan Java Artikel ini meneroka secara mendalam struktur data utama (seperti tatasusunan, senarai terpaut, pepohon, dll.) dan algoritma (seperti pengisihan, carian, algoritma graf, dll.) dalam Java. Struktur ini diilustrasikan dengan contoh praktikal, termasuk menggunakan tatasusunan untuk menyimpan skor, senarai terpaut untuk mengurus senarai beli-belah, tindanan untuk melaksanakan rekursi, baris gilir untuk menyegerakkan benang, dan pepohon dan jadual cincang untuk carian dan pengesahan pantas. Memahami konsep ini membolehkan anda menulis kod Java yang cekap dan boleh diselenggara.

Algoritma CVM terobosan menyelesaikan lebih daripada 40 tahun masalah pengiraan! Saintis komputer membelek syiling untuk mengetahui perkataan unik untuk 'Hamlet' Algoritma CVM terobosan menyelesaikan lebih daripada 40 tahun masalah pengiraan! Saintis komputer membelek syiling untuk mengetahui perkataan unik untuk 'Hamlet' Jun 07, 2024 pm 03:44 PM

Mengira kedengaran mudah, tetapi sangat sukar untuk dilaksanakan dalam amalan. Bayangkan anda diangkut ke hutan hujan tropika yang asli untuk menjalankan banci hidupan liar. Setiap kali anda melihat haiwan, ambil gambar. Kamera digital hanya merekodkan jumlah bilangan haiwan yang dijejaki, tetapi anda berminat dengan bilangan haiwan unik, tetapi tiada statistik. Jadi apakah cara terbaik untuk mengakses populasi haiwan yang unik ini? Pada ketika ini, anda mesti berkata, mula mengira sekarang dan akhirnya bandingkan setiap spesies baharu daripada foto ke senarai. Walau bagaimanapun, kaedah pengiraan biasa ini kadangkala tidak sesuai untuk jumlah maklumat sehingga berbilion-bilion penyertaan. Para saintis komputer dari Institut Statistik India, UNL, dan Universiti Nasional Singapura telah mencadangkan algoritma baharu - CVM. Ia boleh menganggarkan pengiraan item yang berbeza dalam senarai panjang.

Struktur data PHP: Keseimbangan pepohon AVL, mengekalkan struktur data yang cekap dan teratur Struktur data PHP: Keseimbangan pepohon AVL, mengekalkan struktur data yang cekap dan teratur Jun 03, 2024 am 09:58 AM

Pokok AVL ialah pokok carian binari seimbang yang memastikan operasi data yang pantas dan cekap. Untuk mencapai keseimbangan, ia melakukan operasi belok kiri dan kanan, melaraskan subpokok yang melanggar keseimbangan. Pokok AVL menggunakan pengimbangan ketinggian untuk memastikan ketinggian pokok sentiasa kecil berbanding bilangan nod, dengan itu mencapai kerumitan masa logaritma (O(logn)) operasi carian dan mengekalkan kecekapan struktur data walaupun pada set data yang besar.

See all articles