Computer >> Máy Tính >  >> Lập trình >> Javascript

Tạo Hàng đợi Ưu tiên bằng Javascript


Lớp của chúng ta sẽ có các chức năng sau -

  • enqueue (phần tử):Hàm thêm một phần tử vào hàng đợi.
  • dequeue ():Hàm xóa một phần tử khỏi hàng đợi.
  • peek ():Trả về phần tử từ phía trước hàng đợi.
  • isFull ():Kiểm tra xem chúng tôi đã đạt đến giới hạn phần tử trên hàng đợi hay chưa.
  • isEmpty ():kiểm tra xem hàng đợi có trống không.
  • clear ():Xóa tất cả các phần tử.
  • display ():hiển thị tất cả nội dung của mảng

Hãy bắt đầu bằng cách xác định một lớp đơn giản với một hàm tạo có kích thước tối đa của hàng đợi và một hàm trợ giúp sẽ giúp chúng ta khi chúng ta triển khai các hàm khác cho lớp này. Chúng tôi cũng sẽ phải xác định một cấu trúc khác như một phần của nguyên mẫu lớp PriorityQueue sẽ có mức độ ưu tiên và dữ liệu về mỗi nút. Khi chúng tôi triển khai ngăn xếp, chúng tôi cũng sẽ triển khai Hàng đợi ưu tiên bằng cách sử dụng Mảng.

Ví dụ

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;
   }
}

Chúng tôi cũng đã xác định thêm 2 hàm nữa là isFull và isEmpty để kiểm tra xem ngăn xếp đã đầy hay còn trống.

Hàm isFull chỉ kiểm tra xem độ dài của vùng chứa có bằng hoặc hơn maxSize hay không và trả về tương ứng.

Hàm isEmpty kiểm tra xem kích thước của vùng chứa có bằng 0.

Những điều này sẽ hữu ích khi chúng tôi xác định các hoạt động khác. Các hàm mà chúng tôi xác định từ thời điểm này trở đi tất cả sẽ đi vào lớp PriorityQueue.