Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การสร้างคิวลำดับความสำคัญโดยใช้ Javascript


คลาสของเราจะมีฟังก์ชันดังต่อไปนี้ -

  • enqueue(element):ฟังก์ชั่นเพิ่มองค์ประกอบในคิว
  • dequeue():ฟังก์ชันที่ลบองค์ประกอบออกจากคิว
  • peek():ส่งกลับองค์ประกอบจากด้านหน้าของคิว
  • isFull():ตรวจสอบว่าเราถึงขีดจำกัดองค์ประกอบในคิวหรือไม่
  • isEmpty():ตรวจสอบว่าคิวว่างหรือไม่
  • clear():ลบองค์ประกอบทั้งหมด
  • display():แสดงเนื้อหาทั้งหมดของอาร์เรย์

เริ่มต้นด้วยการกำหนดคลาสอย่างง่ายด้วยคอนสตรัคเตอร์ที่ใช้ขนาดสูงสุดของคิวและฟังก์ชันตัวช่วยที่จะช่วยเราเมื่อเรานำฟังก์ชันอื่นๆ สำหรับคลาสนี้ไปใช้ นอกจากนี้เรายังต้องกำหนดโครงสร้างอื่นให้เป็นส่วนหนึ่งของต้นแบบคลาส PriorityQueue ที่จะมีลำดับความสำคัญและข้อมูลเกี่ยวกับแต่ละโหนด ขณะที่เราใช้สแต็ค เราจะใช้ Priority Queue โดยใช้ Arrays ด้วยเช่นกัน

ตัวอย่าง

class PriorityQueue {
   constructor(maxSize) {
      // Set default max size if not provided
      if (isNaN(maxSize)) {
         maxSize = 10;
      }
      this.maxSize = maxSize;
      // Init an array that'll contain the queue values.
      this.container = [];
   }
   // Helper function to display all values while developing
   display() {
      console.log(this.container);
   }
   // Checks if queue is empty
   isEmpty() {
      return this.container.length === 0;
   }
   // checks if queue is full
   isFull() {
      return this.container.length >= this.maxSize;
   }
}
// Create an inner class that we'll use to create new nodes in the queue
// Each element has some data and a priority
PriorityQueue.prototype.Element = class {
   constructor (data, priority) {
      this.data = data; this.priority = priority;
   }
}

เราได้กำหนดฟังก์ชันเพิ่มเติมอีก 2 อย่างคือ isFull และ isEmpty เพื่อตรวจสอบว่าสแต็กเต็มหรือว่างเปล่า

ฟังก์ชัน isFull จะตรวจสอบว่าความยาวของคอนเทนเนอร์เท่ากับหรือมากกว่า maxSize และส่งคืนตามนั้นหรือไม่

ฟังก์ชัน isEmpty จะตรวจสอบว่าคอนเทนเนอร์มีขนาดเท่ากับ 0 หรือไม่

สิ่งเหล่านี้จะมีประโยชน์เมื่อเรากำหนดการดำเนินการอื่นๆ ฟังก์ชันที่เรากำหนดตั้งแต่บัดนี้เป็นต้นไปจะเข้าสู่คลาส PriorityQueue