Stack (ngăn sắp) là một dạng danh sách tuân thủ theo nguyên tắc LIFO (Last In First Out) - nghĩa là nếu một phần tử nào được thêm vào đầu, thì phần tử đó sẽ được lấy ra đầu tiên.
Ví dụ: chồng dĩa sẽ được xếp theo dạng Stack
, nếu muốn lấy dĩa dưới cùng thì ta phải lấy ra hết tất cả dĩa ở trên nó, còn nếu muốn thêm dĩa vào thì thêm vào trên cùng của chồng dĩa.
Stack gồm 2 phương thức chính:
void push(x)
: đưa một giá trị vào đầu stackint pop()
: lấy ra giá trị trên cùng đồng thời trả về giá trị đó.Queue (hàng đợi) là một dạng danh sách tuân thủ theo nguyên tắc FIFO (First In First Out) - và trước sẽ được lấy ra trước.
Ví dụ: xếp hàng mua nước, người vào trước sẽ được phục vụ trước.
Queue gồm 2 phương thức chính:
enqueue(x)
: đưa giá trị vào cuối hàng đợidequeue()
: lấy ra giá trị ở đầu hàng đợi đồng thời trả về giá trị đóHàng đợi ưu tiên là hàng đợi không tuân theo quy tắc FIFO, thường sẽ dự Heap để lưu trữ.
Đọc thêm về Priority Queue sử dụng Heap để biểu diễn: