1.ง่าย
แมป (map หรือ dictionary) เก็บอะไร
- Aค่าตามลำดับการแทรกเท่านั้น
- Bคู่ของคีย์ที่เท่ากัน
- Cค่าที่เรียงตามขนาด
- Dคู่คีย์–ค่าที่คีย์ไม่ซ้ำกัน
2.ง่าย
ความลึก (depth) ของโหนดในต้นไม้คือ
- Aจำนวนเส้นเชื่อมจากรากถึงโหนดนั้น
- Bจำนวนเส้นเชื่อมจากโหนดนั้นถึงใบที่ลึกที่สุด
- Cจำนวนลูกของโหนดนั้น
- Dจำนวนโหนดในต้นไม้ย่อยของมัน
3.ง่าย
สมาชิกของอาร์เรย์ถูกเก็บในหน่วยความจำอย่างไร
- Aในต้นไม้ของหน้าหน่วยความจำ
- Bในบล็อกต่อเนื่องเดียว ต่อกันทีละตัว
- Cในตำแหน่งสุ่มที่เลือกด้วยแฮช
- Dกระจัดกระจาย เชื่อมด้วยตัวชี้
4.ปานกลาง
ต้นไม้ AVL รักษาเงื่อนไขสมดุลใดที่ทุกโหนด
- Aทุกโหนดถูกระบายสีแดงหรือดำ
- Bต้นไม้ย่อยทั้งสองของทุกโหนดมีจำนวนโหนดเท่ากันพอดี
- Cใบทั้งหมดอยู่ที่ความลึกเดียวกันพอดี
- Dความสูงของต้นไม้ย่อยซ้ายและขวาต่างกันไม่เกิน 1
5.ปานกลาง
โครงสร้างข้อมูลใดใช้ตรวจว่าวงเล็บใน "{[()]}" สมดุลหรือไม่
- Aตารางแฮช
- Bคิว
- Cสแตก
- Dbinary search tree
6.ปานกลาง
เหตุใดการท่องอาร์เรย์จึงเร็วกว่าการท่องลิงก์ลิสต์ที่ยาวเท่ากันมากในทางปฏิบัติ
- Aการท่องอาร์เรย์เป็น O(1) โดยรวม ส่วนการท่องลิงก์ลิสต์เป็น O(n)
- Bอาร์เรย์ใช้คำสั่งน้อยกว่าในการเปรียบเทียบค่า
- Cสมาชิกของอาร์เรย์ต่อเนื่องกัน จึงใช้แคชของ CPU ได้ดี
- Dลิงก์ลิสต์เก็บสมาชิกบนดิสก์เสมอ
7.ยาก
ในบัฟเฟอร์วงกลม front == rear อาจหมายถึงว่างหรือเต็ม วิธีทั่วไปในการแยกสองกรณีคืออะไร
- Aเก็บ front และ rear ในตัวแปรเดียวกัน
- Bล้างบัฟเฟอร์ทุกครั้งที่ front เท่ากับ rear ดังนั้นสถานะจึงเป็นว่าง
- Cเก็บจำนวนสมาชิกแยกต่างหาก หรือเว้นหนึ่งช่องไว้เสมอ
- Dทำให้ขนาดบัฟเฟอร์เป็นเลขกำลังสอง
8.ยาก
การแฮชซ้อน (double hashing) ลดปัญหาใดของ linear probing เป็นหลัก
- Aต้นทุน O(n) ในการอ่านค่าของคีย์
- Bความจำเป็นต้องเก็บคีย์ในตาราง
- Cการจับกลุ่มปฐมภูมิ (primary clustering) ซึ่งช่องที่ถูกใช้ต่อกันเป็นสายยาว
- Dความจำเป็นต้องมีฟังก์ชันแฮช
เฉลย
- 1. D · คู่คีย์–ค่าที่คีย์ไม่ซ้ำกัน
- 2. A · จำนวนเส้นเชื่อมจากรากถึงโหนดนั้น
- 3. B · ในบล็อกต่อเนื่องเดียว ต่อกันทีละตัว
- 4. D · ความสูงของต้นไม้ย่อยซ้ายและขวาต่างกันไม่เกิน 1
- 5. C · สแตก
- 6. C · สมาชิกของอาร์เรย์ต่อเนื่องกัน จึงใช้แคชของ CPU ได้ดี
- 7. C · เก็บจำนวนสมาชิกแยกต่างหาก หรือเว้นหนึ่งช่องไว้เสมอ
- 8. C · การจับกลุ่มปฐมภูมิ (primary clustering) ซึ่งช่องที่ถูกใช้ต่อกันเป็นสายยาว
เฉลยทีละขั้นตอนฉบับเต็ม: ฝึกหัวข้อนี้ได้ที่ examproblems.com