Rumah > hujung hadapan web > tutorial js > Kaedah pelaksanaan tindanan dalam kemahiran JavaScipt_javascript

Kaedah pelaksanaan tindanan dalam kemahiran JavaScipt_javascript

WBOY
Lepaskan: 2016-05-16 15:15:09
asal
926 orang telah melayarinya

Langkah seterusnya ialah bahagian pertama struktur data, tindanan.
Timbunan ialah koleksi tersusun yang mengikut prinsip masuk dahulu keluar terakhir (LIFO, nama penuh: Last In First Out). Bahagian atas timbunan sentiasa merupakan elemen terbaharu.
Sebagai contoh: timbunan adalah seperti timbunan buku yang diletakkan di dalam kotak Jika anda ingin mengambil buku bahagian bawah, anda mesti mengeluarkan buku atas terlebih dahulu. (Sudah tentu, anda tidak boleh mengambil buku di bawah dahulu)
Anda juga boleh memahaminya dengan melihat rajah.

Pelaksanaan tindanan dalam JavaScipt
Pertama, buat pembina.

/**
 * 栈的构造函数
 */
function Stack() {

 // 用数组来模拟栈
 var item = [];
}

Salin selepas log masuk

Timbunan perlu mempunyai kaedah berikut:

  • tekan(elemen): Tambahkan beberapa elemen pada bahagian atas tindanan
  • pop(): Alih keluar dan kembalikan elemen atas timbunan
  • peek(): Kembalikan elemen teratas timbunan
  • isAmpty: Semak sama ada tindanan kosong, jika kosong, kembalikan benar
  • jelas: Alih keluar semua elemen daripada tindanan
  • saiz: Mengembalikan bilangan elemen dalam tindanan.
  • cetak: Paparkan semua kandungan dalam tindanan sebagai rentetan

Pelaksanaan kaedah tolak
Penjelasan: Elemen baharu perlu ditambahkan pada tindanan, dan kedudukan elemen berada di hujung baris gilir. Dalam erti kata lain, kita boleh menggunakan kaedah tolak tatasusunan untuk mensimulasikan pelaksanaan.
Pelaksanaan:

/**
 * 将元素送入栈,放置于数组的最后一位
 * @param {Any} element 接受的元素,不限制类型
 */
this.push = function(element) {
 items.push(element);
};
Salin selepas log masuk

Pelaksanaan kaedah pop
Penjelasan: Elemen teratas tindanan perlu dimunculkan dan mengembalikan nilai yang muncul pada masa yang sama. Anda boleh menggunakan kaedah pop tatasusunan untuk mensimulasikan pelaksanaan.
Pelaksanaan:

/**
 * 弹出栈顶元素
 * @return {Any} 返回被弹出的值
 */
this.pop = function() {
 return items.pop();
};
Salin selepas log masuk

Pelaksanaan kaedah peek
Nota: Melihat elemen atas timbunan boleh dicapai dengan menggunakan panjang tatasusunan.
Pelaksanaan:

/**
 * 查看栈顶元素
 * @return {Any} 返回栈顶元素
 */
this.peek = function() {
 return items[items.length - 1];
}
Salin selepas log masuk

Pelaksanaan kaedah lain
Nota: Tiga yang pertama adalah teras kaedah tindanan, dan kaedah yang selebihnya disenaraikan di sini sekaligus. Kerana baris gilir yang akan dibincangkan di bawah akan sangat bertindih dengan bahagian ini.
Pelaksanaan:

/**
 * 确定栈是否为空
 * @return {Boolean} 若栈为空则返回true,不为空则返回false
 */
this.isAmpty = function() {
 return items.length === 0
};

/**
 * 清空栈中所有内容
 */
this.clear = function() {
 items = [];
};

/**
 * 返回栈的长度
 * @return {Number} 栈的长度
 */
this.size = function() {
 return items.length;
};

/**
 * 以字符串显示栈中所有内容
 */
this.print = function() {
 console.log(items.toString());
};

Salin selepas log masuk

Aplikasi Praktikal
Terdapat banyak aplikasi praktikal tindanan Terdapat fungsi dalam buku yang menukar perpuluhan kepada binari. (Jika anda tidak tahu cara mengira binari, anda boleh menggunakan Baidu.) Berikut ialah kod sumber fungsi tersebut.
Prinsipnya ialah memasukkan nombor yang hendak ditukar, terus bahagi dua dan bulatkan. Dan akhirnya gunakan gelung sementara untuk menggabungkan semua nombor dalam tindanan menjadi rentetan untuk output.

/**
 * 将10进制数字转为2进制数字
 * @param {Number} decNumber 要转换的10进制数字
 * @return {Number}      转换后的2进制数字
 */
function divideBy2(decNumber) {

 var remStack = new Stack(),
  rem,
  binaryString = '';

 while (decNumber > 0) {
  rem = Math.floor(decNumber % 2);
  remStack.push(rem);
  decNumber = Math.floor(decNumber / 2);
 }

 while (!remStack.isAmpty()) {
  binaryString += remStack.pop().toString();
 }

 return binaryString;
};

Salin selepas log masuk

Pada ketika ini, kajian tindanan telah berakhir. Saya harap ia akan membantu semua orang untuk mempelajari cara melaksanakan tindanan dalam JavaScript.

Label berkaitan:
sumber:php.cn
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