Laksanakan penimbal gelang baris gilir bulat dalam JavaScript

王林
Lepaskan: 2023-08-22 17:57:08
ke hadapan
828 orang telah melayarinya

Laksanakan penimbal gelang baris gilir bulat dalam JavaScript

Baris Gilir Pekeliling

Baris Giliran ialah struktur data linear, operasinya berdasarkan prinsip FIFO (masuk dahulu, keluar dahulu) dan kedudukan terakhir disambungkan kembali ke kedudukan pertama, membentuk gelung. Ia juga dipanggil "penampan cincin".

Satu faedah giliran bulat ialah kita dapat memanfaatkan ruang di hadapan barisan. Dalam baris gilir biasa, apabila baris gilir menjadi penuh, kita tidak boleh memasukkan elemen seterusnya walaupun terdapat ruang di hadapan baris gilir. Tetapi menggunakan baris gilir bulat, kita boleh menggunakan ruang untuk menyimpan nilai baharu.

Soalan

Kami perlu mereka bentuk pelaksanaan baris gilir pekeliling dalam JavaScript untuk menyokong operasi berikut:

  • MyCircularQueue(k) - Pembina, tetapkan saiz baris gilir kepada k.

  • Front() - Mendapat item hadapan daripada baris gilir. Jika baris gilir kosong, -1 dikembalikan.

  • Belakang() - Mendapat item terakhir daripada baris gilir. Jika baris gilir kosong, -1 dikembalikan.

  • enQueue(value) - Masukkan elemen ke dalam baris gilir bulat. Mengembalikan benar jika operasi berjaya.

  • deQueue() - Mengalih keluar elemen daripada baris gilir bulat. Mengembalikan benar jika operasi berjaya.

  • isEmpty() - Menyemak sama ada baris gilir pekeliling kosong.

  • isFull() - Menyemak sama ada baris gilir pekeliling penuh.

Contoh

Ini kodnya -

Demo

const CircularQueue = function(k) {
   this.size = k
   this.queue = []
   this.start1 = 0
   this.end1 = 0
   this.start2 = 0
   this.end2 = 0
}
CircularQueue.prototype.enQueue = function(value) {
   if(this.isFull()) {
      return false
   }
   if(this.end2 <= this.size - 1) {
      this.queue[this.end2++] = value
   } else {
      this.queue[this.end1++] = value
   }
   return true
}
CircularQueue.prototype.deQueue = function() {
   if(this.isEmpty()) {
      return false
   }
   if(this.queue[this.start2] !== undefined) {
      this.queue[this.start2++] = undefined
   } else {
      this.queue[this.start1++] = undefined
   }
   return true
}
CircularQueue.prototype.Front = function() {
   if(this.isEmpty()) {
      return -1
   }
   return this.queue[this.start2] === undefined ? this.queue[this.start1] :    this.queue[this.start2]
}
CircularQueue.prototype.Rear = function() {
   if(this.isEmpty()) {
      return -1
   }
   return this.queue[this.end1 - 1] === undefined ? this.queue[this.end2 - 1] :    this.queue[this.end1 - 1]
}
CircularQueue.prototype.isEmpty = function() {
   if(this.end2 - this.start2 + this.end1 - this.start1 <= 0) {
      return true
   }
   return false
}
CircularQueue.prototype.isFull = function() {
   if(this.end2 - this.start2 + this.end1 - this.start1 >= this.size) {
      return true
   }
   return false
}
const queue = new CircularQueue(2);
console.log(queue.enQueue(1));
console.log(queue.enQueue(2));
console.log(queue.enQueue(3));
console.log(queue.Rear());
console.log(queue.isFull());
console.log(queue.deQueue());
console.log(queue.enQueue(3));
console.log(queue.Rear());
Salin selepas log masuk

Output

true
true
false
2
true
true
true
3
Salin selepas log masuk

Atas ialah kandungan terperinci Laksanakan penimbal gelang baris gilir bulat dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!