Rumah  >  Artikel  >  hujung hadapan web  >  Laksanakan penimbal gelang baris gilir bulat dalam JavaScript

Laksanakan penimbal gelang baris gilir bulat dalam JavaScript

王林
王林ke hadapan
2023-08-22 17:57:08784semak imbas

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());

Output

true
true
false
2
true
true
true
3

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam