Rumah  >  Artikel  >  hujung hadapan web  >  JS menyusun pengenalan DS&A

JS menyusun pengenalan DS&A

WBOY
WBOYasal
2024-08-16 06:03:07938semak imbas

Jika anda menggunakan mana-mana peranti moden, anda mungkin menghadapi operasi tindanan, walaupun anda tidak menyedarinya. Tindanan adalah asas dalam banyak tugas pengaturcaraan, daripada mengurus panggilan fungsi kepada mendayakan operasi buat asal.

Apakah Stacks?

Tindanan ialah struktur data linear yang mengikut susunan operasi menyusun data dalam struktur LIFO atau FILO.

LIFO: Masuk terakhir, Keluar dahulu.

FILO: Mula-mula masuk, Terakhir keluar.

Tindanan digunakan untuk melakukan operasi pada koleksi elemen seperti menambah dan mengalih keluar elemen, memaparkan elemen teratas dan memaparkan jika koleksi kosong atau penuh.

Contohnya:

Apabila anda berada di pelayar web anda sedang melawati www.ESPN.com dan anda secara tidak sengaja mengklik iklan untuk tiket besbol Chicago White Sox. Kami menambah pada timbunan kami, mungkin tidak sengaja tetapi kini ia berada di bahagian atas timbunan kami. Kemudian kami menyedari bahawa Chicago White Sox telah tewas 15 perlawanan berturut-turut. Baik ... mari tekan butang belakang itu (mengalih keluar elemen itu dari bahagian atas tindanan).

JS stacks DS&A intro

Ya, yang di atas sana. Ini menunjukkan prinsip LIFO dalam operasi tindanan, kami akan meninggalkan(mengalih keluar) halaman terakhir yang dilawati daripada sejarah kami(atau Tindanan) untuk kembali ke www.ESPN.com ... mungkin tahun depan White Sox's.

Operasi tindanan sering digunakan dalam aplikasi yang perlu mengekalkan susunan sejarah penyemak imbas web, buat asal dan buat semula pada editor teks dan timbunan panggilan berfungsi untuk menamakan beberapa.

Fungsi yang biasa digunakan semasa menukar tindanan adalah seperti berikut:

.Tolak = untuk menambah elemen pada tindanan.

.pop = untuk mengalih keluar elemen teratas daripada tindanan.

.peek = untuk memaparkan elemen teratas tindanan.

.length/.size = untuk menentukan jumlah indeks dalam timbunan. Javascript menggunakan (.length)

.isEmpty = menyemak sama ada tindanan kosong.

.isFull = menyemak sama ada timbunan penuh; jika tatasusunan mempunyai saiz tetap.

Struktur data tindanan boleh dibuat dengan kelas tindanan atau dengan tatasusunan biasa.

Melaksanakan tindanan tanpa kelas:

Apabila melakukan operasi tindanan tanpa kelas tindanan, kami mensimulasikan operasi tindanan dengan tatasusunan.

Di bawah ialah contoh menggunakan operasi tindanan untuk membalikkan tatasusunan nombor. Saya akan menggunakan JSON.stringify untuk membandingkan nilai hasil tatasusunan dengan hasil tatasusunan keinginan.

Cth:

// Reverse an array using stack operations

let number = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; // original array
let numberList = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]; // reversed array
let ordernumberList = []; // array to store the reversed order

// Loop through the numberList array to reverse its order
for (var i = 0; i < number.length; i++) {
  let currentValue = numberList.pop(); // using the key .pop method to remove the last element from numberList
  ordernumberList.push(currentValue); // using the key .push method to push the popped element into ordernumberList
}

console.log(ordernumberList + " vs " + number); // compare the arrays

// Convert both arrays into JSON strings for comparison
if (JSON.stringify(ordernumberList) === JSON.stringify(number)) {
  console.log("The number list is reversed: " + ordernumberList);
  return ordernumberList;
} else {
  console.log("The number list is not reversed: " + ordernumberList);
}

Saya ingin menyerlahkan pernyataan if-else pada penghujungnya. Saya menggunakan kaedah JSON.stringify untuk membandingkan dua tatasusunan kerana, tanpanya, perbandingan akan mengembalikan palsu, mencetuskan keadaan lain, walaupun tatasusunan mempunyai kandungan yang sama. Ini berlaku kerana, apabila membandingkan tatasusunan dalam JavaScript, perbandingan itu menyemak rujukannya (iaitu, lokasi memorinya) dan bukannya kandungan sebenar dalam tatasusunan.

Seperti yang dapat kita lihat sepanjang gelung untuk, kaedah kami .pop (dialih keluar) indeks terakhir dalam tatasusunan numberList first(LIFO). Kemudian gunakan kaedah .push untuk menambahkannya ke dalam array ordernumberList baharu, membalikkan tatasusunan asal.

FILO masuk pada tatasusunan baharu yang dirumuskan kerana indeks pertama yang dimasukkan ke dalam tatasusunan ordernumberList akan menjadi yang terakhir keluar(FILO) jika pernah diubah suai dengan operasi tindanan.

Dalam artikel ini, kami telah meneroka cara tindanan beroperasi menggunakan prinsip LIFO dan FILO, melaksanakan operasi tindanan dalam JavaScript. Memahami tindanan adalah penting untuk banyak tugas pengaturcaraan, seperti yang dilihat dalam senario dunia sebenar seperti penyemakan imbas web.

Atas ialah kandungan terperinci JS menyusun pengenalan DS&A. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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