Mục lục:
Định nghĩa - Stack có nghĩa là gì?
Một ngăn xếp là một cấu trúc khái niệm bao gồm một tập hợp các yếu tố đồng nhất và dựa trên nguyên tắc cuối cùng trước hết (LIFO). Nó là một kiểu dữ liệu trừu tượng thường được sử dụng với hai thao tác chính là đẩy và bật. Đẩy và bật được thực hiện trên phần tử trên cùng, đây là mục được thêm gần đây nhất vào ngăn xếp. Thao tác đẩy thêm một phần tử vào ngăn xếp trong khi thao tác bật sẽ loại bỏ một phần tử khỏi vị trí trên cùng. Khái niệm ngăn xếp được sử dụng trong lập trình và tổ chức bộ nhớ trong máy tính.
Techopedia giải thích về Stack
Một ngăn xếp đại diện cho một chuỗi các đối tượng hoặc các thành phần trong định dạng cấu trúc dữ liệu tuyến tính. Ngăn xếp bao gồm một đáy giới hạn và tất cả các hoạt động được thực hiện trên vị trí trên cùng. Bất cứ khi nào một phần tử được thêm vào ngăn xếp bằng thao tác đẩy, giá trị trên cùng được tăng thêm một và khi một phần tử được bật ra khỏi ngăn xếp, giá trị trên cùng sẽ bị giảm đi một. Một con trỏ đến vị trí trên cùng của ngăn xếp còn được gọi là con trỏ ngăn xếp.
Một ngăn xếp có thể được cố định về kích thước hoặc có thể có triển khai động trong đó kích thước được phép thay đổi. Trong trường hợp ngăn xếp dung lượng giới hạn, cố gắng thêm một phần tử vào ngăn xếp đã đầy đã gây ra ngoại lệ tràn ngăn xếp. Tương tự, một điều kiện trong đó một hoạt động pop cố gắng loại bỏ một phần tử khỏi ngăn xếp đã trống được gọi là dòng chảy.
Một ngăn xếp được coi là một cấu trúc dữ liệu bị hạn chế vì chỉ cho phép một số lượng hạn chế các hoạt động. Bên cạnh các hoạt động đẩy và pop, một số triển khai nhất định có thể cho phép các hoạt động nâng cao như:
- Peek - Xem mục trên cùng trong ngăn xếp.
- Sao y - Sao chép giá trị của mục hàng đầu vào một biến và đẩy nó trở lại vào ngăn xếp.
- Hoán đổi - Hoán đổi hai mục trên cùng trong ngăn xếp.
- Xoay - Di chuyển các phần tử trên cùng trong ngăn xếp theo chỉ định của một số hoặc di chuyển theo kiểu xoay.
Việc triển khai phần mềm của khái niệm ngăn xếp được thực hiện bằng cách sử dụng các mảng và danh sách được liên kết trong đó vị trí trên cùng được theo dõi bằng cách sử dụng một con trỏ biến hoặc tiêu đề tương ứng. Nhiều ngôn ngữ lập trình cung cấp các tính năng tích hợp để hỗ trợ thực hiện ngăn xếp.
Ngăn xếp phần cứng được thực hiện cho mục đích cấp phát bộ nhớ và truy cập bằng cách sử dụng nguồn gốc và kích thước cố định. Các thanh ghi ngăn xếp được sử dụng để lưu trữ giá trị của con trỏ ngăn xếp.
