ใบงาน โครงสร้างข้อมูล พร้อมเฉลย
ใบงาน โครงสร้างข้อมูล ฟรีสำหรับพิมพ์: 8 ข้อ ตั้งแต่ระดับง่ายถึงระดับข้อสอบจริง พร้อมเฉลย พิมพ์หรือบันทึกเป็น PDF ได้
สำหรับผู้สอน: พิมพ์ ทำสำเนา และใช้ในชั้นเรียนได้ฟรี ใบงานใหม่แต่ละชุดมีค่าตัวเลขใหม่และเฉลยของตัวเอง หากใส่ลิงก์ไปยัง ExamProblems ในหน้ารายวิชาของคุณ เราจะขอบคุณมาก
ชื่อ: ____________________ วันที่: ____________
1.ง่าย
ลักษณะเด่นของเซต (set) ในฐานะชนิดข้อมูลนามธรรมคืออะไร
- Aเก็บคู่คีย์–ค่า
- Bเก็บสมาชิกเรียงลำดับ
- Cเข้าถึงได้เฉพาะที่ปลายด้านเดียว
- Dเก็บสมาชิกโดยไม่มีซ้ำ
2.ง่าย
ในการแทนกราฟด้วยรายการประชิด (adjacency list) เก็บอะไรสำหรับแต่ละจุดยอด
- Aแถวของค่าบูลีน V ค่า
- Bรายการของจุดยอดข้างเคียง
- Cจำนวนเส้นเชื่อมทั้งหมดในกราฟ
- Dเส้นทางสั้นที่สุดไปยังทุกจุดยอดอื่น
3.ง่าย
ในต้นไม้ ใบ (leaf) คืออะไร
- Aโหนดที่ไม่มีโหนดลูก
- Bโหนดที่มีค่ามากที่สุด
- Cโหนดที่มีลูกหนึ่งตัวพอดี
- Dโหนดที่ไม่มีโหนดแม่
4.ปานกลาง
วิธีแก้การชนกันแบบใดเก็บคีย์ที่ชนกันไว้ในลิสต์ที่ถังเดียวกัน
- Aการตรวจสอบกำลังสอง (quadratic probing)
- Bการตรวจสอบเชิงเส้น (linear probing)
- Cการเชื่อมโซ่แยก (separate chaining)
- Dการแฮชซ้อน (double hashing)
5.ปานกลาง
เหตุใดการท่องอาร์เรย์จึงเร็วกว่าการท่องลิงก์ลิสต์ที่ยาวเท่ากันมากในทางปฏิบัติ
- Aสมาชิกของอาร์เรย์ต่อเนื่องกัน จึงใช้แคชของ CPU ได้ดี
- Bลิงก์ลิสต์เก็บสมาชิกบนดิสก์เสมอ
- Cการท่องอาร์เรย์เป็น O(1) โดยรวม ส่วนการท่องลิงก์ลิสต์เป็น O(n)
- Dอาร์เรย์ใช้คำสั่งน้อยกว่าในการเปรียบเทียบค่า
6.ปานกลาง
จุดประสงค์ของโหนดยามเฝ้า (sentinel หรือ dummy) ในลิงก์ลิสต์คืออะไร
- Aเก็บจำนวนสมาชิก
- Bทำให้โค้ดง่ายขึ้นโดยตัดกรณีพิเศษที่หัวหรือท้าย
- Cเพื่อป้องกันไม่ให้ลิสต์ขยายเกินจำนวนโหนดสูงสุดที่กำหนดไว้
- Dทำให้ลิสต์เรียงลำดับ
7.ยาก
อัลกอริทึมของ Kahn สำหรับการเรียงทอพอโลยีลบจุดยอดที่มี in-degree 0 ซ้ำ ๆ โครงสร้างใดเก็บจุดยอดเหล่านั้น
- Aสแตกของเส้นเชื่อมที่เยี่ยมทั้งหมด
- Bmax-heap เรียงตาม out-degree
- Cคิว (หรือคอลเล็กชันใดก็ได้) ของจุดยอดที่มี in-degree เป็น 0
- Dเมทริกซ์ประชิดที่บันทึกว่าจุดยอดใดถูกลบไปแล้ว
8.ยาก
การค้นหาคีย์ใด ๆ ในฮีป min ทวิภาคที่มี n สมาชิกใช้เวลาเท่าใด
- AO(n)
- BO(log n)
- CO(log log n)
- DO(1)
เฉลย
- 1. D · เก็บสมาชิกโดยไม่มีซ้ำ
- 2. B · รายการของจุดยอดข้างเคียง
- 3. A · โหนดที่ไม่มีโหนดลูก
- 4. C · การเชื่อมโซ่แยก (separate chaining)
- 5. A · สมาชิกของอาร์เรย์ต่อเนื่องกัน จึงใช้แคชของ CPU ได้ดี
- 6. B · ทำให้โค้ดง่ายขึ้นโดยตัดกรณีพิเศษที่หัวหรือท้าย
- 7. C · คิว (หรือคอลเล็กชันใดก็ได้) ของจุดยอดที่มี in-degree เป็น 0
- 8. A · O(n)
เฉลยทีละขั้นตอนฉบับเต็ม: ฝึกหัวข้อนี้ได้ที่ examproblems.com