Ngăn xếp và hàng đợi có lý do tồn tại riêng. Ngăn xếp là cấu trúc dữ liệu FILO (Đầu tiên cuối cùng) hoặc LIFO (hai cách) có thể được triển khai bằng cách sử dụng mảng, danh sách liên kết hoặc các biểu mẫu khác. Xem xét lịch sử trình duyệt. Bạn điều hướng đến Trang web A -> sau đó B -> sau đó C ->D. Khi người dùng di chuyển về phía trước, trước tiên bạn hãy đẩy (chèn vào đuôi) danh sách trang web. Điều này đảm bảo rằng trang hiện tại luôn ở trên cùng của ngăn xếp.
Sau đó, khi người dùng chạm lại nút, bạn pop một ở phía trên (hoặc bỏ ra khỏi đuôi - cuối cùng được sử dụng để chèn) mà cung cấp cho các trang web đã ghé thăm - C. Do đó, khái niệm về Đầu Năm (mà là Site A) và Out cuối (người cuối cùng để đi vào là Site D mà lần lượt trở thành người đầu tiên đi ra ngoài)
tương tự có thể nói cho hàng đợi đó là FIFO (First In First Out). Hãy xem xét ví dụ về hàng đợi công việc. Khi thực hiện một công việc, bạn sẽ (không xem xét bất kỳ thuật toán tối ưu hóa nào) phục vụ người đầu tiên đến. Điều này làm cho hàng đợi một cấu trúc dữ liệu tuyệt vời để xử lý công việc trên cơ sở đầu tiên đến trước được phục vụ trước.
Trong cả hai trường hợp, bạn sẽ không muốn loại bỏ tùy ý hoặc chèn phần tử vào bất kỳ chỉ mục nào. Không, điều đó sẽ dẫn đến một hành vi không mong muốn. Do đó, sự cần thiết cho stack/queue. Tôi một lần nữa nhấn mạnh rằng ngăn xếp/hàng đợi có thể được thực hiện bằng cách thực thi các hạn chế về danh sách được liên kết.
Xin lỗi vì chất lượng hình ảnh kém - tôi vừa vẽ nó bằng sơn.
ngăn xếp và hàng đợi là trừu tượng cơ bản về DS. chúng không cần thiết phải được triển khai bằng danh sách được liên kết. stack và queue đại diện cho hai thuộc tính chúng ta muốn trong cuộc sống hàng ngày của chúng ta, FILO và FIFO, tương ứng. – HuStmpHrrr