Cả ngăn xếp và hàng đợi được xác định bởi một tập hợp các đối tượng được sắp xếp theo thứ tự cụ thể trong cấu trúc dữ liệu dựa trên một số tương đương trong đời thực. Cả hai đều là cấu trúc dữ liệu tuyến tính được sử dụng để lưu trữ và truy xuất hiệu quả các yếu tố dữ liệu, ngoại trừ nguyên tắc làm việc. Ngăn xếp là một danh sách các phần tử được sắp xếp theo thứ tự trong đó tất cả các phần chèn và xóa được thực hiện ở cùng một đầu, trong khi hàng đợi hoàn toàn ngược lại với ngăn xếp được mở ở cả hai đầu có nghĩa là một đầu được sử dụng để chèn dữ liệu trong khi đầu kia để xóa dữ liệu. Sự khác biệt chính giữa hai là cơ chế làm việc của họ.
Một ngăn xếp là một cấu trúc dữ liệu tuyến tính được sử dụng để tổ chức dữ liệu theo một cách cụ thể để có thể sử dụng nó một cách hiệu quả. Máy cần các hướng để hoàn thành các nhiệm vụ cả đơn giản và phức tạp dưới dạng các lệnh. Tương tự, dữ liệu có thể được cấu trúc theo nhiều cách khác nhau và một trong những cấu trúc dữ liệu hiệu quả nhất là ngăn xếp. Đó là một cấu trúc dữ liệu trừu tượng giống như một ngăn xếp vật lý nơi các đối tượng được sắp xếp theo một thứ tự cụ thể, cụ thể dựa trên cơ chế nhập trước xuất trước (LIFO), có nghĩa là mục cuối cùng được thêm vào sẽ được truy cập trước và ngược lại . Ứng dụng phổ biến nhất của cấu trúc dữ liệu ngăn xếp là quay lui hoặc thuật toán tìm kiếm theo chiều sâu.
Hàng đợi cũng là một cấu trúc dữ liệu tuyến tính, hơi giống với cấu trúc dữ liệu ngăn xếp, ngoại trừ nó được mở ở cả hai đầu. Đó là một bộ sưu tập các đối tượng nối tiếp nhau giống như một hàng người. Không giống như ngăn xếp, nó dựa trên nguyên tắc nhập trước xuất trước (FIFO) có nghĩa là mục được thêm sớm nhất có thể được truy cập trước và ngược lại. Trong hàng đợi, một đầu được sử dụng để chèn các mục và đầu còn lại để xóa các mục. Giống như một dòng người, các thực thể mới được đặt ở phía sau và các thực thể đã được phục vụ sẽ bị xóa khỏi phía trước. Hai thao tác được phép trên một hàng đợi: enqueue và dequeue. Enqueue đề cập đến việc thêm các mục ở phía sau và dequeue có nghĩa là loại bỏ các mục từ phía trước.
Ngăn xếp là một cấu trúc dữ liệu cơ bản, một kiểu dữ liệu trừu tượng được biểu thị bằng cấu trúc tuyến tính giống như ngăn xếp vật lý nơi đối tượng có thể được thêm vào bất cứ lúc nào nhưng có thể được loại bỏ được thêm vào sau cùng. Nói một cách đơn giản, việc chèn và xóa các đối tượng trong cấu trúc dữ liệu ngăn xếp diễn ra ở một đầu là đỉnh của ngăn xếp. Hàng đợi có phần giống với ngăn xếp ngoại trừ nó được mở ở cả hai đầu - một đầu để chèn đối tượng và đầu kia để loại bỏ đối tượng có nghĩa là các đối tượng được lưu trữ trước tiên có thể được truy cập trước.
Cả ngăn xếp và hàng đợi là các kiểu dữ liệu trừu tượng không nguyên thủy trong cấu trúc dữ liệu được phục vụ như một tập hợp các đối tượng trong đó các thực thể được lưu trữ theo một thứ tự cụ thể. Ngăn xếp là một thùng chứa các đối tượng trong đó các thực thể được lưu trữ và loại bỏ dựa trên nguyên tắc làm việc từ trước đến trước (LIFO) có nghĩa là các đối tượng có thể được lưu trữ và truy xuất tại một thời điểm. Mặt khác, một hàng đợi là một tập hợp các đối tượng trong đó các thực thể được lưu trữ và loại bỏ theo nguyên tắc nhập trước xuất trước (FIFO).
Ngăn xếp tên đề cập đến sự tương tự của một cấu trúc trong đó các mục được đặt chồng lên nhau giống như một ngăn xếp giống như một gói bánh quy. Một đầu được sử dụng để đặt và xóa các đối tượng khỏi ngăn xếp, giúp dễ dàng chọn một đối tượng từ trên xuống, đồng thời gây khó khăn cho việc truy cập vào đối tượng cuối cùng yêu cầu loại bỏ nhiều mục một từ đầu. Hàng đợi nằm đối diện với ngăn xếp có nghĩa là các vật thể mới được đặt ở phía sau và được gỡ bỏ từ phía trước giống như một cuốn sách.
Có hai thao tác cơ bản có thể được thực hiện trên ngăn xếp: đẩy, về cơ bản sẽ thêm một mục vào ngăn xếp và nếu ngăn xếp đầy thì đó là điều kiện Tràn và bật, loại bỏ mục gần đây nhất khỏi ngăn xếp và ngăn xếp trống , đề cập đến một điều kiện Underflow. Có một hoạt động nhìn trộm bổ sung liên quan đến ngăn xếp cho phép bạn truy cập mục ở trên cùng mà không sửa đổi ngăn xếp. Hai nguyên tắc cơ bản được liên kết với hàng đợi: enqueue có nghĩa là thêm các đối tượng vào phía sau và dequeue có nghĩa là loại bỏ các đối tượng từ phía trước.
Một trong những ứng dụng cơ bản nhất của cấu trúc dữ liệu ngăn xếp là thuật toán tìm kiếm theo chiều sâu, dựa trên ý tưởng quay lui chủ yếu được sử dụng để tìm kiếm biểu đồ hoặc cấu trúc dữ liệu cây. Nó cũng có thể được sử dụng cho trình biên dịch / hệ điều hành để xử lý các lệnh gọi hàm hoặc để thực hiện các hàm đệ quy. Ứng dụng phổ biến nhất của cấu trúc dữ liệu hàng đợi là lập lịch CPU hoặc lập lịch đĩa hoặc nghiên cứu hoạt động. Một ví dụ thực tế về cấu trúc dữ liệu hàng đợi là hàng đợi của chính người mà người đứng đầu tiên trong hàng sẽ được phục vụ trước.
Cả stack và queue đều là các cấu trúc dữ liệu trừu tượng không nguyên thủy được định nghĩa là một tập hợp các đối tượng được sắp xếp theo một thứ tự cụ thể trong máy tính, nhưng với các nguyên tắc làm việc khác nhau. Trong khi cả hai liên quan đến tổ chức và lưu trữ dữ liệu, họ làm điều đó rất khác nhau. Stack là một cấu trúc dữ liệu cơ bản dựa trên nguyên tắc LIFO còn được gọi là cuối cùng trước hết có nghĩa là mục được thêm cuối cùng sẽ được truy cập trước hoặc FILO có nghĩa là mục đầu tiên được truy cập sau cùng. Ngược lại, hàng đợi dựa trên nguyên tắc Fify (nhập trước xuất trước) có nghĩa là mục sớm nhất sẽ được truy cập trước.