Danh sách được liên kết là một trong những cấu trúc dữ liệu quan trọng nhất mà bạn có thể học.
Trong danh sách được liên kết, mỗi mục chứa một tham chiếu đến mục theo sau nó.
Chúng ta có thể bắt đầu từ đầu danh sách,headvà lặp lại qua tất cả các mục của danh sách, cho đến khi chúng ta đi đến phần cuối [tail].
So với một mảng, các mục không nằm cạnh nhau trong bộ nhớ thực [trong ngôn ngữ lập trình cấp thấp] hoặc không có chỉ mục mà chúng ta có thể sử dụng để truy cập ngẫu nhiên một mục của mảng.
Chúng tôi không thể tham chiếu một mục ở giữa danh sách mà không bắt đầu từ đầu, vì chúng tôi không biết cách tham chiếu nó.
JavaScript không có triển khai danh sách được liên kết, vì vậy chúng tôi sẽ tạo một danh sách ngay bây giờ.
Đầu tiên, chúng tôi tạoItemlớp sẽ được chứa cho mỗi mục trong danh sách:
Chúng tôi có một con trỏ đến mục tiếp theo trong danh sách và giá trị.
Sau đó, chúng tôi xác định mộtLinkedListlớp sẽ lưu trữ 2 giá trị riêng tư:headvàtail.
Chúng tôi xác định mộtappend[]phương pháp để thêm một mục vào danh sách. Nếu đó là mục đầu tiên chúng tôi thêm vào, thì mục đó vừa là phần đầu vừa là phần cuối của danh sách. Nếu không, chúng tôi tạo mục và chúng tôi gán nó chonextthuộc tính của mục đuôi:
Đây là cách chúng ta có thể sử dụng nó:
Chúng ta có thể thêm mộtsize[]phương thức để trả về kích thước của danh sách:
Làm thế nào chúng ta có thể tìm thấy một mục trong danh sách, theo giá trị? Hãy triển khai một phương pháp để làm như vậy:
const list = new LinkedList[] list.append[1] list.append[2] list.append[3] const item = list.find[2] //item.value === 2
Điều gì sẽ xảy ra nếu chúng ta muốn chèn một mục vào danh sách liên kết? Chúng tôi đã cóappend[]để chèn mục vào cuối danh sách. Hãy triển khai một cách để chèn mục tại một vị trí cụ thể:
const list = new LinkedList[] list.append[1] list.append[2] list.append[3] list.insert[2, a] list.size[] //4
Một loại danh sách liên kết khác là danh sách liên kết kép, trong đó mỗi mục cũng chứa một liên kết đến phần tử trước đó.