Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

ข้ามรายการในโครงสร้างข้อมูล


ในรายการข้าม เราสามารถค้นหาองค์ประกอบ a จากโหนดที่มีองค์ประกอบ b ได้โดยทำการค้นหาต่อจากจุดนี้ a.

โปรดทราบว่าหาก a b การค้นหาจะดำเนินการในทิศทางไปข้างหน้า

ตัวพิมพ์ย้อนกลับมีความสมมาตรกับการค้นหาปกติในรายการข้าม แต่กรณีไปข้างหน้านั้นซับซ้อนกว่าจริง ๆ

โดยปกติ การค้นหาในรายการข้ามนั้นคาดว่าจะรวดเร็ว เนื่องจากผู้รักษาการณ์ที่จุดเริ่มต้นของรายการถือเป็นโหนดที่สูงที่สุด

อย่างไรก็ตาม นิ้วของเราอาจสัมพันธ์กับโหนดที่มีความสูง 1 ด้วยเหตุนี้ เราจึงแทบจะไม่ปีนขึ้นไปขณะพยายามค้นหา สิ่งที่ไม่เคยเกิดขึ้นตามปกติ

คุณสมบัติที่สำคัญที่สุดของรายการข้ามคือพวกเขาต้องการพื้นที่เชิงเส้นที่คาดหมาย รวมถึงระดับ O (บันทึก n) ที่คาดไว้ รองรับการค้นหาในเวลา O (บันทึก n) ที่คาดไว้ และรองรับการแทรกและการลบที่ตำแหน่งที่กำหนดใน O ที่คาดไว้ (1 ) เวลา.

มีการอธิบายอย่างละเอียดเกี่ยวกับคุณสมบัติและส่วนขยายต่างๆ ของรายการข้าม รวมทั้งรหัสเทียมสำหรับวิธีที่รายการข้ามสนับสนุนการค้นหาด้วยนิ้วในช่วงเวลา O (บันทึก d) ที่คาดไว้ เพื่อความสะดวกในการค้นหานิ้วย้อนกลับ นิ้วไปยังโหนด V จะถูกเก็บไว้ตามโครงสร้างข้อมูล O (log n) ที่คาดหวังซึ่งสำหรับแต่ละระดับ i เก็บตัวชี้ไปที่โหนดทางด้านซ้ายของ V โดยที่ตัวชี้ระดับ i ชี้ไปที่ V หรือโหนดทางด้านขวาของ V การขยับนิ้วจำเป็นต้องอัปเดตรายการพอยน์เตอร์นี้ให้สอดคล้องกัน

การค้นหาด้วยนิ้วย้อนกลับทำได้โดยการระบุโหนดต่ำสุดในโครงสร้างข้อมูลนิ้วก่อน ซึ่งอยู่ทางด้านซ้ายของปุ่มค้นหา y โดยที่โหนดในโครงสร้างข้อมูลนิ้วจะพิจารณาตามลำดับการเพิ่มระดับ

หลังจากนั้นการค้นหาจะดำเนินการลงจากโหนดที่ระบุที่คล้ายกันในการค้นหารายการข้ามมาตรฐาน