Computer >> Máy Tính >  >> Lập trình >> Lập trình

Bỏ qua danh sách trong cấu trúc dữ liệu

Trong danh sách bỏ qua, người ta có thể tìm kiếm phần tử a từ một nút chứa phần tử b bằng cách tiếp tục tìm kiếm từ điểm a này.

Lưu ý rằng nếu a b, thì tìm kiếm sẽ tiếp tục theo hướng tiến.

Chữ hoa ngược đối xứng với tìm kiếm thông thường trong danh sách bỏ qua, nhưng chữ hoa chuyển tiếp thực sự phức tạp hơn.

Thông thường, tìm kiếm trong danh sách bỏ qua được mong đợi sẽ nhanh chóng vì trạm gác ở đầu danh sách được coi là nút cao nhất.

Tuy nhiên, ngón tay của chúng ta có thể được liên kết với một nút có độ cao 1. Do đó, chúng ta có thể hiếm khi leo lên trong khi cố gắng tìm kiếm; điều gì đó không bao giờ xảy ra bình thường.

Các thuộc tính quan trọng nhất của danh sách bỏ qua là chúng cần không gian tuyến tính dự kiến, bao gồm các mức O (log n) dự kiến, hỗ trợ tìm kiếm trong thời gian O (log n) dự kiến ​​và hỗ trợ chèn và xóa tại một vị trí nhất định trong O dự kiến ​​(1 ) thời gian.

Nó đã được xây dựng dựa trên các thuộc tính và phần mở rộng khác nhau của danh sách bỏ qua, bao gồm mã giả về cách danh sách bỏ qua hỗ trợ tìm kiếm bằng ngón tay trong thời gian O (log d) dự kiến. Để tạo điều kiện thuận lợi cho việc tìm kiếm ngón tay quay ngược lại, một ngón tay tới nút V được lưu trữ dưới dạng cấu trúc dữ liệu ngón tay khoảng cách O (log n) dự kiến ​​mà đối với mỗi cấp tôi lưu trữ một con trỏ tới nút bên trái của V nơi con trỏ cấp i trỏ tới V hoặc một nút ở bên phải V. Di chuyển ngón tay cần danh sách các con trỏ này được cập nhật tương ứng.

Tìm kiếm ngược ngón tay được thực hiện bằng cách xác định đầu tiên nút thấp nhất trong cấu trúc dữ liệu ngón tay nằm ở bên trái của phím tìm kiếm y, nơi các nút trong cấu trúc dữ liệu ngón tay được xem xét theo thứ tự tăng dần.

Sau đó, quá trình tìm kiếm tiếp tục đi xuống từ nút đã xác định tương tự như trong tìm kiếm danh sách bỏ qua tiêu chuẩn.