1. Tạo một bStack rỗng (Stack chứa dấu ngoặc).
2. Với mỗi ký hiệu sym trong đoạn (từ trái sang phải) : 2.1. Nếu sym là dấu ngoặc trái:
2.1.1. Đưa sym vào bStack. 2.2. Nếu sym là dấu ngoặc phải: 2.2.1. Nếu bStack rỗng, return false.
2.2.2. Lấy dấu ngoặc ở bStack, đưa vào biến lef.
2.2.3. Nếu lef và sym không khớp được với nhau, return false.
Lecture 9 – Ngăn xếp (Stacks)9.1. Khái niệm về stacks 9.1. Khái niệm về stacks
9.2. Các thao tác chính của stacks9.3. Các thao tác khác của stacks 9.3. Các thao tác khác của stacks
9.4. Ví dụ về ứng dụng của stack
9.4.1. Đảo mảng 9.4.2. Đảo chuỗi 9.4.2. Đảo chuỗi
9.4.3. Chuyển đổi hệ cơ số 9.4.4. Bracket Matching 9.4.4. Bracket Matching 9.4.5. Balancing Act
9.4.5. Balancing Act
Với phương pháp trước mới chỉ đảm bảo được khớp dấu ngoặc ‘(‘ và ‘)’.
Trong thực tế, còn có nhiều dấu ngoặc khác cần khớp như: ‘(‘ và ‘)’; ‘[‘ và ‘]’; ‘{‘ và ‘}’. Như vậy, trong giải thuật trên, cần lưu ý thêm quá trình push và pop vào bStack: Như vậy, trong giải thuật trên, cần lưu ý thêm quá trình push và pop vào bStack:
Nếu quá trình push vào bStack có dạng: (, [, {. Quá trình pop từ bStack cần đúng thứ tự: }, ], ). Quá trình pop từ bStack cần đúng thứ tự: }, ], ).
Lecture 9 – Ngăn xếp (Stacks)9.1. Khái niệm về stacks 9.1. Khái niệm về stacks
9.2. Các thao tác chính của stacks9.3. Các thao tác khác của stacks 9.3. Các thao tác khác của stacks 9.4. Ví dụ về ứng dụng của stack 9.4.1. Đảo mảng
9.4.2. Đảo chuỗi
9.4.3. Chuyển đổi hệ cơ số 9.4.4. Bracket Matching 9.4.4. Bracket Matching 9.4.5. Balancing Act
9.5. Bài tập thực hành