Danh sách nối kép gồm các Node được nối với nhau theo hai chiều, mỗi Node là một bản ghi (Record) gồm có 3 trường:
- Trường thứ nhất chứa giá trị lưu trong đó.
- Trường thứ hai (Next) chứa liên kết (con trỏ) tới Node kế tiếp, tức là thông tin để biết Node tiếp theo trong danh sách là Node nào, trong trường hợp nếu là Node cuối cùng sẽ được gán một giá trị đặc biệt.
- Trường thứ ba (Prev) chứa liên kết (con trỏ) tới Node liền trước, tức là thông tin để biết Node đứng trước Node đó trong danh sách là Node nào, trong trường hợp là Node đầu tiên(không có Node liền trước) thì nó cũng sẽ được gán một giá trị đặc biệt.
Luận văn thực hiện việc kiểm định các thao tác cơ bản trên danh sách nối kép: Duyệt danh sách, thêm Node vào danh sách, xóa Node trong danh sách, ghép hai danh sách theo thứ tự sắp xếp.
Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang69
Khác với danh sách nối đơn, danh sách nối kép sử dụng hai chốt: Node đầu tiên trong danh sách được gọi là First, Node cuối cùng trong danh sách được gọi là Last.Để thực hiện duyệt danh sách có 2 phương pháp: nếu thực hiện duyệt từ đầu danh sách sử dụng con trỏ First và thông qua liên kết Next để sang Node kế tiếp, đến khi gặp giá trị đặc biệt (duyệt qua Node cuối) thì dừng lại; Trong trường hợp duyệt danh sách từ cuối danh sách thì sẽ bắt đầu từ con trỏ Last, thông qua biến Prev để sang Node liền trước cho tới khi gặp giá trị đặc biệt (Node đầu danh sách) thì dừng lại. Các thao tác cơ bản với danh sách liên kết chủ yếu thực hiện thông qua thủ tục duyệt danh sách, sau đây là mã nguồn các thao tác với danh sách trên ngôn ngữ đặc tả được sử dụng trong luận văn.