Danh sách liên kết thông thường thường được triển khai bằng cách sử dụng các mảng làm cho chúng rất nhanh và bản chất của chúng không yêu cầu thay đổi kích thước động. Bạn chỉ cần kiểm tra nhanh đọc và ghi các chỉ mục để xem liệu chúng có bị mất kết thúc không và nếu có, hãy đặt lại thành 0 (hoặc một, bất kỳ thứ gì).
Tuy nhiên, chúng thường được sử dụng cho những thứ như bộ đệm đầu vào, nơi dữ liệu không có giá trị thực khi đọc. Danh sách liên hệ có giá trị lâu dài và địa chỉ liên hệ mới sẽ ghi đè địa chỉ liên hệ cũ khi danh sách đầy, điều này có thể được chấp nhận trừ khi bạn ghi đè lên người bạn đang để lại cho bạn một khoản tiền trong ý muốn.
Tôi không nghĩ rằng danh sách được liên kết là cách hiệu quả nhất để thực hiện bộ đệm tròn (câu hỏi gốc).
Mục đích của bộ đệm tròn là tốc độ và một mảng đơn giản không thể bị đánh bại với tốc độ trong bối cảnh của bộ đệm tròn. Ngay cả khi bạn giữ một con trỏ đến mục danh sách được liên kết được truy cập gần đây nhất của bạn, một mảng sẽ vẫn hiệu quả hơn. Danh sách có khả năng thay đổi kích thước động (trên không) mà không cần thiết cho bộ đệm tròn. Có nói rằng, tôi nghĩ rằng một bộ đệm tròn có lẽ không phải là cấu trúc đúng cho ứng dụng (danh sách liên lạc) bạn đề cập đến.
Đó chỉ là người đàn ông hoàn hảo, cảm ơn! Để cải thiện phong cách, người ta có thể sử dụng '??' operator: return current.Next ?? current.List.First; – Julien
@Julien Ngôn ngữ phức tạp không nhất thiết phải hỗ trợ khả năng đọc. –
Một điều quan trọng cần lưu ý ở đây là 'current.List' có thể có khả năng rỗng nếu chính nút đó được hủy liên kết. Xem https://msdn.microsoft.com/en-us/library/h339c45b(v=vs.110).aspx –