Giải thuật kiểm tra sử dụng dấu ngoặc:

Một phần của tài liệu Lecture 09 stacks tài liệu Kỹ thuật Lập trình (Trang 33 - 37)

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 lefsym 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 ‘(‘‘)’.

 Trong thực tế, còn có nhiều dấu ngoặc khác cần khớp như: ‘(‘ ‘)’; ‘[‘ ‘]’; ‘{‘ ‘}’. Như vậy, trong giải thuật trên, cần lưu ý thêm quá trình pushpop vào bStack:  Như vậy, trong giải thuật trên, cần lưu ý thêm quá trình pushpop 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

Một phần của tài liệu Lecture 09 stacks tài liệu Kỹ thuật Lập trình (Trang 33 - 37)