
คำแนะนำที่เกี่ยวข้อง: บทช่วยสอน JavaScript

จากมุมมองระดับสูง คิวคือโครงสร้างข้อมูลที่ช่วยให้เราประมวลผลข้อมูลแต่ละรายการตามลำดับที่จัดเก็บไว้ในฐานข้อมูล
คิวรองรับการดำเนินการหลัก 2 ประการ: เข้าคิวและถอนคิว นอกจากนี้ คุณอาจพบว่ามีประโยชน์ในการดำเนินการดูและความยาวในคิว

การดำเนินการจัดคิวในรูปด้านบนจะแทรกรายการที่ 8 ไปที่จุดสิ้นสุด และ 8 จะกลายเป็นจุดสิ้นสุดของคิว
Queue.enqueue(8);

ในภาพด้านบน การดำเนินการถอนคิวจะส่งคืนและลบรายการที่ 7 ออกจากคิว หลังจากถอนคิวแล้ว รายการที่ 2 จะกลายเป็นรายการหลักใหม่
Queue.dequeue(); // => 7

รายการที่ 7 เป็นจุดเริ่มต้นของคิวในภาพด้านบน และการดำเนินการตรวจสอบจะส่งคืนเฉพาะส่วนหัว (รายการ) 7 โดยไม่ต้องแก้ไขคิว
Queue.peek(); // => 7

คิวในภาพมี 4 รายการ คือ 4, 6, 2 และ 7 ส่งผลให้คิวยาวเป็น 4
Queue.length; // => 4
เวลาคงที่ O(1) หมายความว่าไม่ว่าคิวจะมีขนาดเท่าใดก็ตาม (สามารถมีได้ 10 หรือ 1 ล้านรายการ): การดำเนินการเข้าคิว, ดีคิว, การดู และความยาวจะต้องดำเนินการพร้อมกันทั้งหมด
มาดูการใช้งานที่เป็นไปได้ของโครงสร้างข้อมูลคิวในขณะที่ยังคงรักษาข้อกำหนดที่ว่าการดำเนินการทั้งหมดจะต้องดำเนินการในเวลาคงที่ O(1)
คิวคลาส {
ตัวสร้าง () {
นี่.รายการ = {};
นี้.headIndex = 0;
นี่.tailIndex = 0;
-
เข้าคิว (รายการ) {
this.items[this.tailIndex] = รายการ;
this.tailIndex++;
-
ยกเลิกคิว() {
รายการ const = this.items [this.headIndex];
ลบ this.items[this.headIndex];
นี้.headIndex++;
คืนสินค้า;
-
แอบมอง() {
กลับ this.items[this.headIndex];
-
รับความยาว () {
กลับ this.tailIndex - this.headIndex;
-
-
คิว const = คิวใหม่ ();
คิว.เข้าคิว(7);
คิว.เข้าคิว(2);
คิว.เข้าคิว(6);
คิว.เข้าคิว(4);
Queue.dequeue(); // => 7
Queue.peek(); // => 2
Queue.length; // => 3 const Queue = new Queue() คือวิธีสร้างอินสแตนซ์ของคิว
เรียกใช้เมธอด Queu.enqueue(7) เพื่อใส่รายการที่ 7 ลงในคิว
Queue.dequeue() ลบรายการส่วนหัวออกจากคิว ในขณะที่ Queu.peek() เป็นเพียงการดูจากจุดเริ่มต้น
สุดท้าย Queu.length จะแสดงจำนวนรายการที่เหลืออยู่ในคิว
เกี่ยวกับการนำไปใช้งาน: ภายในคลาส Queue วัตถุธรรมดา this.items จะเก็บรายการไว้ในคิวด้วยดัชนีตัวเลข ดัชนีของรายการส่วนหัวถูกติดตามโดย this.headIndex และดัชนีของรายการส่วนท้ายถูกติดตามโดย this.tailIndex
วิธีการคิว(), dequeue(), peek() และความยาว() ของคลาสคิวใช้เฉพาะ:
การเข้าถึงแอตทริบิวต์ (เช่น this.items[this.headIndex]), หรือดำเนินการทางคณิตศาสตร์ (เช่น this.headIndex++)
ดังนั้นความซับซ้อนของเวลาของวิธีการเหล่านี้จึงเป็นค่าคงที่เวลา O(1)
โครงสร้างข้อมูลคิวเป็นแบบ "เข้าก่อนออกก่อน" (FIFO): รายการแรกสุดที่จะจัดคิวคือรายการแรกสุดที่จะจัดคิว
คิวมีการดำเนินการหลัก 2 ประการ: เข้าคิวและถอนคิว นอกจากนี้ คิวสามารถมีการดำเนินการเสริม เช่น มุมมองและความยาว
การดำเนินการคิวทั้งหมดจะต้องดำเนินการ O(1) ในเวลาคงที่
คำแนะนำที่เกี่ยวข้อง: บทช่วยสอนการเรียนรู้ JavaScript
ข้างต้นเป็นคำอธิบายโดยละเอียดเกี่ยวกับการใช้งานคิวใน JavaScript พร้อมตัวอย่างและรูปภาพ สำหรับข้อมูลเพิ่มเติม โปรดใส่ใจกับบทความอื่น ๆ ที่เกี่ยวข้องบนเว็บไซต์ภาษาจีน PHP