Xếp hàng so với hàng đợi
Stack là một danh sách có thứ tự trong đó việc chèn và xóa các mục danh sách chỉ có thể được thực hiện ở một đầu được gọi là đầu. Vì lý do này, stack được coi là cấu trúc dữ liệu cuối cùng (LIFO). Hàng đợi cũng là một danh sách có thứ tự trong đó việc chèn các mục danh sách được thực hiện ở một đầu được gọi là phía sau và việc xóa các mục được thực hiện ở đầu kia được gọi là phía trước. Cơ chế chèn và xóa này làm cho hàng đợi có cấu trúc dữ liệu First in First out (FIFO).
Chồng là gì?
Như đã đề cập trước đó, stack là một cấu trúc dữ liệu trong đó các phần tử được thêm và xóa khỏi chỉ một đầu được gọi là đỉnh. Ngăn xếp chỉ cho phép hai hoạt động cơ bản được gọi là đẩy và pop. Hoạt động đẩy thêm một yếu tố mới vào đầu ngăn xếp. Thao tác pop sẽ loại bỏ một phần tử khỏi đỉnh ngăn xếp. Nếu ngăn xếp đã đầy, khi hoạt động đẩy được thực hiện, nó được coi là tràn ngăn xếp. Nếu một thao tác pop được thực hiện trên một ngăn xếp đã trống, thì nó được coi là một ngăn xếp ngăn xếp. Do số lượng nhỏ các hoạt động có thể được thực hiện trên một ngăn xếp, nó được coi là một cấu trúc dữ liệu bị hạn chế. Ngoài ra, theo cách xác định các thao tác đẩy và bật, rõ ràng các phần tử được thêm vào cuối cùng trong ngăn xếp sẽ ra khỏi ngăn xếp trước. Do đó, ngăn xếp được coi là cấu trúc dữ liệu LIFO.
Hàng đợi là gì?
Trong hàng đợi, các phần tử được thêm vào từ phía sau hàng đợi và được xóa khỏi phía trước hàng đợi. Vì các phần tử được thêm vào trước sẽ bị xóa khỏi hàng đợi trước, nên nó duy trì thứ tự FIFO. Do thứ tự thêm và loại bỏ các yếu tố này, hàng đợi thể hiện ý tưởng về dòng thanh toán. Các hoạt động chung được hỗ trợ bởi một hàng đợi là các hoạt động en-queue và de-queue. Hoạt động hàng đợi sẽ thêm một phần tử ở phía sau hàng đợi, trong khi thao tác khử hàng đợi loại bỏ một phần tử khỏi phía trước hàng đợi. Nói chung, hàng đợi không có giới hạn về số lượng phần tử có thể được thêm vào hàng đợi bên cạnh các ràng buộc bộ nhớ.
Sự khác biệt giữa Stack và Queue là gì?
Mặc dù cả ngăn xếp và hàng đợi là các loại danh sách được sắp xếp, chúng có một số khác biệt quan trọng. Trong ngăn xếp, việc thêm hoặc xóa các mục chỉ có thể được thực hiện từ một đầu được gọi là đầu, trong khi trong hàng đợi, việc thêm các mục được thực hiện từ một đầu được gọi là phía sau và xóa các mục được thực hiện từ đầu kia được gọi là phía trước. Trong ngăn xếp, các mục được thêm cuối cùng vào ngăn xếp sẽ bị xóa đầu tiên khỏi ngăn xếp. Do đó ngăn xếp được coi là một cấu trúc dữ liệu LIFO. Trong hàng đợi, các mục được thêm trước sẽ bị xóa khỏi hàng đợi trước. Do đó, hàng đợi được coi là một cấu trúc dữ liệu FIFO.
Liên kết liên quan:
Sự khác biệt giữa Stack và Heap