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

Tạo ngăn xếp trong Javascript


Mặc dù Mảng trong JavaScript cung cấp tất cả các chức năng của Ngăn xếp, nhưng chúng ta hãy triển khai lớp Ngăn xếp của riêng mình. Lớp của chúng ta sẽ có các chức năng sau -

  • push (phần tử):Chức năng đẩy các phần tử lên trên cùng của ngăn xếp.
  • pop ():Hàm xóa một phần tử ở trên cùng và trả về phần tử đó.
  • peek ():Trả về phần tử ở trên cùng của ngăn xếp.
  • isFull ():Kiểm tra xem chúng tôi đã đạt đến giới hạn phần tử trên ngăn xếp chưa.
  • isEmpty ():kiểm tra xem ngăn xếp 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 ngăn xếp và một hàm helper display () 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 đã 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.

isFull hàm 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.

isEmpty hàm 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. Tất cả các hàm chúng ta xác định từ thời điểm này trở đi sẽ nằm trong lớp Stack.

Ví dụ

class Stack {

   constructor(maxSize) {

      // Set default max size if not provided

      if (isNaN(maxSize)) {

         maxSize = 10;

      }

      this.maxSize = maxSize; // Init an array that'll contain the stack values.

      this.container = [];

   }



   // A method just to see the contents while we develop this class

   display() {

      console.log(this.container);

   }



   // Checking if the array is empty

   isEmpty() {

      return this.container.length === 0;

   }

   

   // Check if array is full

   isFull() {

      return this.container.length >= maxSize;

   }



   push(element) {

      // Check if stack is full

      if (this.isFull()) {

         console.log("Stack Overflow!");

         return;

      }

      this.container.push(element);

   }

}