ปัจจุบันนี้การเขียนโปรแกรมไม่เพียงแต่เป็นทักษะที่มีค่าในตลาดแรงงานเท่านั้น แต่ยังเป็นศาสตร์ที่ช่วยเราแก้ไขปัญหาต่างๆ ที่เจอในชีวิตประจำวันอีกด้วย หนึ่งในทักษะการเขียนโค้ดที่สำคัญคือการจัดการกับโครงสร้างข้อมูล (Data Structures) ซึ่ง "Hash Table" เป็นหัวข้อที่ไม่ควรมองข้าม เพราะการเข้าใจการทำงานของ Hash Table มีความสำคัญในการออกแบบแอปพลิเคชันที่มีประสิทธิภาพ
ในบทความนี้เราจะมาพูดถึงการสร้าง Hash Table ขึ้นมาเองโดยใช้วิธี "Seperate Chaining" ในภาษา C++ โดยไม่ใช้ไลบรารีพื้นฐานใดๆ ของภาษานั้น และพร้อมกันนี้เราจะยกตัวอย่าง use case ในการใช้งาน Hash Table ในโลกจริง ซึ่งจะสามารถทำให้คุณเห็นคุณค่าของการเรียนรู้โปรแกรมมิ่งผ่านที่ EPT ซึ่งไม่เพียงแต่จะส่งเสริมให้คุณสามารถสร้างโปรเจคได้ด้วยตัวเอง แต่ยังช่วยพัฒนาทักษะการคิดวิเคราะห์และการแก้ไขปัญหาที่ซับซ้อนอีกด้วย
Hash Table เป็นโครงสร้างของข้อมูลที่ช่วยในการจัดเก็บข้อมูลให้สามารถค้นหาได้เร็วขึ้น โดยใช้ฟังก์ชันที่เรียกว่า "Hash Function" ในการแปลงคีย์ (Key) เป็นดัชนี (Index) ซึ่งจะชี้ไปยังตำแหน่งที่ข้อมูลถูกเก็บอยู่ในตารางค่า Hash (Hash Table) ส่วน "Seperate Chaining" เป็นเทคนิคหนึ่งในการจัดการกับ Collision คือสถานการณ์ที่มีหลายคีย์ถูก Hash เป็นดัชนีเดียวกัน โดยที่ Seperate Chaining นั้นจะใช้ Linked List ในการเก็บรายการของค่าที่ Collision นั้นเอง
ก่อนอื่น เราจะมาเริ่มกันที่การประกาศคลาสสำหรับโนดใน Linked List และคลาสสำหรับ Hash Table เอง
ในโค้ดด้านบนนี้ เรามีตัวแปร `BUCKET` เพื่อกำหนดขนาดของ Hash Table และ `table` เป็น vector ที่ประกอบไปด้วย Linked Lists เพื่อเก็บข้อมูล
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM