Hãy xem xét một lớp ngăn xếp đơn giản trong Javascript.
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); } pop() { // Check if empty if (this.isEmpty()) { console.log("Stack Underflow!"); return; } this.container.pop(); } }
Đây là 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 chức năng kiểm tra xem kích thước của vùng chứa có bằng 0. Các chức năng Push và Pop được sử dụng để thêm và xóa các phần tử mới khỏi ngăn xếp tương ứng hay không.
Trong phần này, chúng ta sẽ thêm thao tác PEEK trong lớp này. Nhìn trộm một ngăn xếp có nghĩa là lấy giá trị cao nhất của mảng. Vì vậy, chúng ta có thể triển khai hàm peek như sau -
peek() { if (isEmpty()) { console.log("Stack Underflow!"); return; } return this.container[this.container.length - 1]; }
Bạn có thể kiểm tra xem chức năng này có hoạt động tốt hay không bằng cách sử dụng -
Ví dụ
let s = new Stack(2); s.peek(); s.push(10); console.log(s.peek());
Đầu ra
Điều này sẽ cung cấp đầu ra -
Stack Underflow! 10