Hướng dẫn ứng dụng cấu trúc dữ liệu Stack và Queue | Học trực tuyến CNTT, học lập trình từ cơ bản đến nâng cao

Hướng dẫn ứng dụng cấu trúc dữ liệu Stack và Queue

Chia sẻ kiến thức 03/04/2022

Chắc hẳn bạn đã từng sử dụng các lớp Stack, Queue được xây dựng sẵn của ngôn ngữ lập trình. Đây là 2 cấu trúc dữ liệu cơ bản nhưng vô cùng quan trọng. Để giúp bạn hiểu rõ hơn, bài viết dưới đây FUNiX sẽ hướng dẫn ứng dụng cấu trúc dữ liệu Stack và Queue một cách chi tiết. Mời các bạn cùng tham khảo nhé!

>> Khóa học lập trình cơ bản

>> Kỹ thuật lập trình PHP 

1. Cấu trúc dữ liệu Stack và Queue là gì?

1.1 Cấu trúc dữ liệu Stack

Stack hay gọi là ngăn xếp, đây là 1 loại cấu trúc dữ liệu trừu tượng hoạt động theo nguyên lý vào sau ra trước (Last In First Out).

Bạn có thể hình dung như sau: Khi bạn chồng các giỏ đựng hàng lên nhau cần tuân theo một quy tắc đó là khi thêm một giỏ mới vào chồng thì phải thêm vào phía trên và khi lấy giỏ ra cũng phải lấy từ phía trên.

Giỏ đựng hàng xếp chồng theo cấu trúc dữ liệu Stack
Giỏ đựng hàng xếp chồng theo cấu trúc dữ liệu Stack.

1.2 Cấu trúc dữ liệu Queue

Queue hay gọi là hàng đợi, đây là 1 loại cấu trúc dữ liệu trừu tượng hoạt động theo nguyên lý vào trước ra sau (First In First Out).

Bạn có thể hình dung đó là một hàng người đang xếp hàng để mua iphone 13. Theo nguyên lý chung, thì ai đến trước thì được mua trước. Tuy nhiên, vẫn có một số trường hợp được ưu tiên, nhưng ở phạm vi bài viết này chúng ta không đề cập đến.

Dòng người xếp hàng mua iphone 13 theo cấu trúc dữ liệu Queue
Dòng người xếp hàng mua iphone 13 theo cấu trúc dữ liệu Queue.

>>> Đọc ngay: 4 con đường sự nghiệp cho các nhà phân tích dữ liệu (Data Analyst)

2. Hướng dẫn ứng dụng cấu trúc dữ liệu Stack và Queue

Dưới đây là hướng dẫn ứng dụng cấu trúc dữ liệu Stack và Queue:

2.1 Ứng dụng cấu trúc dữ liệu của Stack

Các ứng dụng phổ biến nhất của Stack bao gồm:

  • Đảo ngược từ: Đặt tất cả các chữ cái trong một Stack và lấy lần lượt các ký tự ra. Dựa theo nguyên tắc vào sau ra trước ta sẽ nhận được các chữ cái được sắp xếp theo thứ tự ngược lại. Ví dụ: “Empty” sẽ được chuyển thành “ytpmE”.
  • Trình biên dịch sử dụng ngăn xếp để tính giá trị của các biểu thức như 3 + 5/6 * (8 – 9) bằng cách chuyển đổi biểu thức sang dạng tiền tố hoặc hậu tố.
  • Trong trình duyệt Web: Nút quay lại trong trình duyệt lưu tất cả các URL mà ta đã truy cập trước đó trong một cấu trúc dữ liệu Stack. Mỗi lần ta truy cập một trang mới, nó sẽ được thêm vào trên cùng của cấu trúc. Khi ta nhấn nút quay lại, URL hiện tại sẽ bị xóa khỏi ngăn xếp và URL trước đó sẽ được lấy ra.

>>> Đọc ngay: Nghề phân tích dữ liệu data analysis tại Việt Nam

2.2 Ứng dụng cấu trúc dữ liệu của Queue

Cấu trúc dữ liệu của Queue (hàng đợi) được sử dụng rất phổ biến trong hệ thống cũng như trong phát triển ứng dụng. 

  • Xử lý các lệnh trong máy tính. Chẳng hạn như: Khi quản lý in trên mạng, các phòng ban làm việc thường sẽ có nhiều máy tính yêu cầu in đồng thời và ngay cả một máy tính cũng yêu cầu in nhiều lần. Trường hợp nếu máy in không thể đáp ứng tức thời tất cả các yêu cầu đó, thì chương trình quản lý in sẽ thiết lập một hàng đợi để quản lý các yêu cầu. Yêu cầu nào nhận trước nó sẽ giải quyết trước.
  • Kiểm tra chuỗi Palindrome: Một chuỗi thường sẽ có tính chất Palindrome nếu nó có tính chất đối xứng. Nghĩa là dù viết xuôi hay viết ngược đều được. Để kiểm tra tính chất này của một chuỗi bất kì, bạn đọc chuỗi bởi 2 cấu trúc riêng biệt là stack và queue. Sau đó, lấy ra từng phần tử trong stack và queue để so sánh với nhau. Nếu tất cả các phần tử trong stack đều giống với phần tử trong queue ở vị trí tương ứng thì chuỗi đó có tính chất Palindrome.

Nói chung, Stack và Queue là 2 cấu trúc dữ liệu quen thuộc đối với các lập trình viên. Mong rằng, bài viết chia sẻ của FUNiX về hướng dẫn ứng dụng cấu trúc dữ liệu Stack và Queue trên đây sẽ giúp ích nhiều cho bạn trong công việc của mình . Chúc các bạn thành công!

>>> Nếu bạn đang có nhu cầu tìm hiểu về khóa học lập trình đi làm ngay. Hãy liên hệ với FUNiX ngay tại đây:

>>> Xem thêm chuỗi bài viết liên quan:

 

Phạm Thị Thanh Ngọc

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
FUNiX V2 GenAI Chatbot ×

yêu cầu gọi lại