ฉันสังเกตเห็นว่าภาษาที่ใช้งานได้ส่วนใหญ่ใช้ลิสต์ที่เชื่อมโยงเดี่ยว ๆ (รายการ "ข้อเสีย") เป็นประเภทลิสต์พื้นฐานที่สุด ตัวอย่าง ได้แก่ Common LISP, Haskell และ F # สิ่งนี้แตกต่างจากภาษากระแสหลักโดยที่ประเภทรายการเนทีฟเป็นอาร์เรย์
ทำไมถึงเป็นอย่างนั้น?
สำหรับ Common LISP (ถูกพิมพ์แบบไดนามิก) ฉันเข้าใจว่าข้อเสียนั้นเป็นเรื่องทั่วไปมากพอที่จะเป็นฐานของรายการต้นไม้และอื่น ๆ นี่อาจเป็นเหตุผลเล็กน้อย
สำหรับภาษาที่พิมพ์แบบสแตติกฉันไม่สามารถหาเหตุผลที่ดีได้ฉันยังสามารถหาข้อโต้แย้งได้
- ฟังก์ชั่นการใช้งานช่วยส่งเสริมการเปลี่ยนแปลงไม่ได้ดังนั้นความง่ายในการแทรกของรายการที่เชื่อมโยงจึงเป็นข้อได้เปรียบน้อยกว่า
- รูปแบบการใช้งานช่วยกระตุ้นการใช้งานไม่ได้ดังนั้นยังใช้ข้อมูลร่วมกัน อาเรย์จะแบ่งปัน "บางส่วน" ได้ง่ายกว่ารายการที่ลิงก์
- คุณสามารถทำการจับคู่รูปแบบในอาร์เรย์ปกติได้เช่นกันและดียิ่งขึ้น (เช่นคุณสามารถพับจากขวาไปซ้ายได้อย่างง่ายดาย)
- ยิ่งไปกว่านั้นคุณจะได้รับการเข้าถึงแบบสุ่มฟรี
- และ (ข้อได้เปรียบในทางปฏิบัติ) หากพิมพ์ภาษาแบบคงที่คุณสามารถใช้เค้าโครงหน่วยความจำปกติและเพิ่มความเร็วจากแคช
เหตุใดจึงชอบรายการที่เชื่อมโยง
an array is easier to share "partially" than a linked list
ต้องมีความกระจ่างในสิ่งที่คุณหมายถึง ตรงข้ามเป็นจริงตามที่ฉันเข้าใจ - คุณสามารถแชร์รายการที่เชื่อมโยงได้ง่ายขึ้นบางส่วนโดยผ่านโหนดใด ๆ ในนั้นในขณะที่อาร์เรย์จะต้องใช้เวลาในการทำสำเนาใหม่ หรือในแง่ของการแบ่งปันข้อมูลรายการที่เชื่อมโยงสองรายการสามารถชี้ไปที่คำต่อท้ายเดียวกันซึ่งไม่สามารถทำได้ด้วยอาร์เรย์