1. Con trỏ và biến động
2.2. Danh sách liên kết ngược
Là loại danh sách mà trường liên kết của phần tử tạo ra sau luôn trỏ vào phần tử tạo ra trước đó. Trường liên kết của phần tử tạo ra đầu tiên trỏ vào Nil. điều này dẫn tới việc khi kết xuất thông tin ra chúng ta phải bắt đầu từ phần tử tạo ra cuối cùng vì chỉ có như vậy chúng ta mới biết địa chỉ của phần tử tạo ra trước đó. Nếu cố tình đi từ phần tử tạo ra dầu tiên thì không thể biết phần tử tiếp theo là phần tử nào. Liên kết kiểu này gọi là kiểu LIFO (Last In- Firt Out) hay còn gọi là kiểu xếp chồng. Phần tử nhập vào cuối cùng sẽ được lấy ra đầu tiên. Danh sách tạo ra theo kiểu này được gọi là danh sách liên kết ngược.
Ví dụ: Giả thiết rằng chúng ta cần xây dựng một danh sách sinh viên với các trường dữ liệu là Mhs (mã hồ sơ), Hoten (Họ và tên), Diem (điểm tổng kết) , trường liên kết lấy tên là next (tiếp tục). Kiểu dữ liệu bản ghi với các trường nêu trên lấy tên là sinhvien. để tạo ra danh sách sinh viên chúng ta cần tạo ra một kiểu con trỏ DS trỏ vào kiểu dữ liệu sinhvien và trường liên kết next trong bản ghi sinhvien sẽ trỏ vào kiểu dữ liệu Ds.
Ds = ^sinhvien; sinhvien= Record Mhs:byte;
Hoten: string[20]; Diem:real; Next: Ds;
End;
Sau khi khai báo kiểu dữ liệu cần khai báo biến con trỏ Ds để lưu trữ dữ liệu nhập vào và biến Ctcuoi (con trỏ cuối) để trỏ vào phần tử cuối cùng. Vấn đề là làm thế nào để con trỏ liên kết next luôn trỏ vào phần tử tạo ra trước đó. Để làm việc này chúng ta tạo ra biến động Ds để lưu trữ dữ liệu. Cứ mỗi bản ghi cần nhập vào thì tạo ra một biến động Ds mới. địa chỉ của biến động Ds luôn được gán cho con trỏ cuối Ctcuoi.