Programming Techniques

Bài tập về Stack

I. Khởi tạo và thao tác cơ bản

  1. Khởi tạo một stack rỗng
  2. Thêm phần tử vào stack (push)
  3. Xóa phần tử khỏi stack (pop)
  4. Xem phần tử trên cùng (top/peek)
  5. Kiểm tra stack có rỗng không
  6. Đếm số lượng phần tử trong stack
  7. In toàn bộ phần tử trong stack
  8. Đảo ngược một mảng bằng stack
  9. Đảo ngược một chuỗi bằng stack
  10. Sao chép một stack sang stack khác

II. Ứng dụng xử lý chuỗi

  1. Kiểm tra chuỗi ngoặc có hợp lệ không
  2. Chuyển đổi biểu thức trung tố (infix) sang hậu tố (postfix)
  3. Chuyển đổi biểu thức trung tố sang tiền tố (prefix)
  4. Tính giá trị biểu thức hậu tố
  5. Tính giá trị biểu thức tiền tố
  6. Xóa tất cả dấu ngoặc trong biểu thức hợp lệ
  7. Kiểm tra chuỗi Palindrome bằng stack
  8. Tách các từ trong chuỗi theo thứ tự ngược lại
  9. Đếm số lần xuất hiện ký tự trong chuỗi bằng stack
  10. Rút gọn chuỗi chứa dấu ngoặc lồng nhau

III. Tính toán và thuật toán

  1. Tính lũy thừa bằng stack thay cho đệ quy
  2. Tính giai thừa bằng stack
  3. Chuyển đổi số thập phân sang nhị phân
  4. Đánh giá biểu thức có dấu ngoặc
  5. Phân tích cú pháp biểu thức
  6. Thực hiện toán tử Undo/Redo
  7. Đảo thứ tự các phần tử trong stack
  8. Chèn phần tử vào giữa stack
  9. Lấy phần tử ở vị trí k từ đỉnh stack
  10. Xóa phần tử ở giữa stack

IV. Ứng dụng trong cấu trúc dữ liệu

  1. Triển khai stack bằng mảng
  2. Triển khai stack bằng danh sách liên kết
  3. Stack 2 ngăn trong cùng một mảng
  4. Dùng 2 stack để tạo queue
  5. Dùng queue để tạo stack
  6. So sánh 2 stack có giống nhau không
  7. Trộn 2 stack thành một
  8. Lấy phần tử nhỏ nhất từ stack (MinStack)
  9. Tạo stack hỗ trợ undo thao tác
  10. Đếm số thao tác push/pop từ một dãy lệnh

V. Bài toán thực tế nâng cao

  1. Giải bài toán tháp Hà Nội dùng stack
  2. Kiểm tra tính đối xứng của danh sách
  3. Tìm dấu ngoặc thừa trong biểu thức
  4. Mô phỏng trình duyệt web với nút Back/Forward
  5. Mô phỏng hệ thống undo trong trình soạn thảo
  6. In thứ tự các bước đi lùi trong mê cung
  7. Giải bài toán toán học có nhiều ngoặc lồng nhau
  8. Tìm phần tử tiếp theo lớn hơn (Next Greater Element)
  9. Tìm chiều cao tối đa của stack sau dãy thao tác
  10. Tìm dấu ngoặc cân bằng tối thiểu cần chèn