Nguyên tắc nào giúp ngăn xếp tuân theo quy tắc "LIFO" (Last In, First Out)?
A.
Do thanh ghi SP có cơ chế chứa được nhiều dữ liệu một cách tuần tự
B.
Do mỗi lần cất vào ngăn xếp, dữ liệu sẽ được tự động đẩy xuống địa chỉ thấp hơn, và khi lấy ra, dữ liệu trong ngăn xếp sẽ tự động đẩy lên địa chỉ cao hơn
C.
Do khi cất dữ liệu vào ngăn xếp, trước hết SP sẽ giảm và dữ liệu sẽ được cất vào địa chỉ mà SP giữ. Khi lấy ra, dữ liệu sẽ được lấy từ địa chỉ SP (là dữ liệu cất vào sau cùng), sau đó SP tự động tăng để trỏ tới dữ liệu cất vào trước đó
D.
Cả ba câu kia đều đúng
Trả lời:
Đáp án đúng: C
Nguyên tắc LIFO (Last In, First Out) trong ngăn xếp (stack) được đảm bảo nhờ cơ chế hoạt động của con trỏ ngăn xếp (Stack Pointer - SP). Khi cất dữ liệu vào ngăn xếp, SP sẽ giảm (thường là giảm đi một hoặc hai đơn vị tùy thuộc vào kích thước dữ liệu) để trỏ đến vị trí trống tiếp theo, sau đó dữ liệu được ghi vào vị trí mà SP trỏ tới. Khi lấy dữ liệu ra, dữ liệu sẽ được đọc từ vị trí mà SP trỏ tới (vị trí được ghi vào sau cùng), sau đó SP tăng lên để trỏ đến dữ liệu được cất vào trước đó. Điều này đảm bảo dữ liệu được lấy ra theo thứ tự ngược lại với thứ tự cất vào.
Phương án A sai vì thanh ghi SP không chứa dữ liệu, mà chứa địa chỉ của đỉnh ngăn xếp.
Phương án B sai vì mô tả không chính xác cách thức hoạt động của ngăn xếp. Dữ liệu không tự động "đẩy" lên hay xuống.
Phương án D sai vì A và B sai.
Phương án C đúng vì mô tả chính xác cơ chế hoạt động của SP trong ngăn xếp LIFO.