DANH SÁCH LIấN KẾT 4.1 Giới thiệu
4.3.1. Cỏc phộp toỏn trờn danh sỏch
éể thiết lập kiểu dữ liệu trừu tượng danh sỏch (hay ngắn gọn là danh sỏch) ta phải định nghĩa cỏc phộp toỏn trờn danh sỏch. Và như chỳng ta sẽ thấy trong toàn bộ giỏo trỡnh, khụng cú một tập hợp cỏc phộp toỏn nào thớch hợp cho mọi ứng dụng (application). Vỡ vậy ở đõy ta sẽ định nghĩa một số phộp toỏn cơ bản nhất trờn danh sỏch. éể thuận tiện cho việc định nghĩa ta giả sử rằng danh sỏch gồm cỏc phần tử cú kiểu là kiểu phần tử, vị trớ của cỏc phần tử trong danh sỏch cú kiểu là kiểu vị trớ và vị trớ sau phần tử cuối cựng trong danh sỏch L là ENDLIST(L). Cần nhấn mạnh rằng khỏi niệm vị trớ là do ta định nghĩa, nú khụng phải là giỏ trị của cỏc phần tử trong danh sỏch. Vị trớ cú thể là đồng nhất với vị trớ lưu trữ phần tử
hoặc khụng. Cỏc phộp toỏn được định nghĩa trờn danh sỏch là:
− INSERT_LIST(p,x,L) xen phần tử x ( kiểu ElementType ) vào danh sỏch L tại vị trớ p. Tức là nếu danh sỏch là a1,.., ap-1, ap, ap+1, ... , an thỡ sau khi xen ta cú kết quả a1, ... , ap-1, x, ap, ap+1 , ... , an. Nếu vị trớ p khụng tồn tại trong danh sỏch thỡ phộp toỏn khụng được định nghĩa.
− LOCATE(x,L) thực hiện việc định vị phần tử x trong danh sỏch L. Locate trả kết quả là vị trớ của phần tử x trong danh sỏch. Nếu x khụng cú trong danh sỏch thỡ vị trớ sau phần tử cuối cựng của danh sỏch được trả về, tức là ENDLIST(L).
− RETRIEVE(p,L) lấy giỏ trị của phần tử thứ p của danh sỏch L; nếu vị trớ p khụng cú trong danh sỏch thỡ kết quả khụng xỏc định.
− DELETE_LIST(p,L) thủ tục thực hiện việc xoỏ phần tử thứ p của danh sỏch. Nếu vị trớ p khụng cú trong danh sỏch thỡ phộp toỏn khụng được định nghĩa và danh sỏch L sẽ khụng thay đổi
− NEXT(p,L) cho kết quả là vị trớ của phần tử đi sau phần tử thứ p; nếu p là phần tử cuối cựng trong danh sỏch L thỡ NEXT(p,L) cho kết quả là ENDLIST(L). Next khụng xỏc định nếu p khụng phải là vị trớ của một phần tử trong danh sỏch.
− PREVIOUS(p,L) cho kết quả là vị trớ của phần tử đứng trước phần tử p trong danh sỏch. Nếu p là phần tử đầu tiờn trong danh sỏch thỡ Previous(p,L) khụng xỏc định. Previous cũng khụng xỏc định trong trường hợp p khụng phải là vị trớ của phần tử nào trong danh sỏch.
− FIRST(L) cho kết quả là vị trớ của phần tử đầu tiờn trong danh sỏch. Nếu danh sỏch rỗng thỡ ENDLIST(L) được trả về.
− PRINT_LIST(L) liệt kờ cỏc phần tử của L theo thứ tự xuất hiện của chỳng trong danh sỏch.
− EMPTY_LIST(L) cho kết quả TRUE nếu danh sỏch cú rỗng, ngược lại nú cho giỏ trị FALSE.
− MAKENULL_LIST(L) khởi tạo một danh sỏch L rỗng. − LENGTH(L) Xỏc định độ dài của danh sỏch.
− EMPTY(L) Kiểm tra xem danh sỏch cú rỗng hay khụng. − FULL(L) Kiểm tra danh sỏch cú đầy hay khụng