บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูล ความรู้เกี่ยวกับชนิดของข้อมูลและโครงสร้างข้อมูลแบบต่างๆ เป็นส่วนที่สําคัญในการทํางาน ของระบบคอมพิวเตอร์ ข้อมูลที่สามารถนํามาประมวลผลด้วยคอมพิวเตอร์มีหลากหลายประเภท การนํา เอาข้อมูลประเภทต่างๆ เข้ามาจัดการโดยอาศัยคอมพิวเตอร์นั้นเป็นสิ่งที่ผู้พัฒนาโปรแกรมต้องคํานึงถึง ในการพัฒนาโปรแกรมด้วยคอมพิวเตอร์ ผู้พัฒนาโปรแกรมจําเป็นต้องคําถึงถึงชนิดของข้อมูลโครงสร้าง ข้อมูล การแทนที่ข้อมูลในหน่วยความจําของข้อมูลในแต่ละประเภท จะเห็นได้ว่าในกระบวนการออกแบบ โปรแกรมคอมพิวเตอร์สิ่งสําคัญอันดับแรกที่ต้องคํานึงถึงคือ การเลือกโครงสร้างข้อมูล ซึ่งจากการพัฒนา ระบบงานใหญ่ๆ ได้แสดงให้เห็นว่าความยากในการพัฒนาโปรแกรมคอมพิวเตอร์ที่มีประสิทธิภาพนั้น จะ ขึ้นอยู่กับโครงสร้างข้อมูลที่เลือกใช้อย่างมาก หลังจากตัดสินใจเลือกโครงสร้างข้อมูลที่จะใช้แล้วก็มักจะ ทําให้ทราบถึงขั้นตอนวิธีที่ต้องใช้กับโครงสร้างข้อมูลนั้นได้ แต่ในบางครั้งก็อาจจะกลับกันคือ การ ประมวลผลที่สําคัญๆ ของโปรแกรม ได้มีการใช้ขั้นตอนวิธีที่ต้องใช้โครงสร้างข้อมูลบางแบบโดยเฉพาะ จึงจะทํางานได้เต็มประสิทธิภาพ ถึงอย่างไรก็ตามไม่ว่าจะเลือกโครงสร้างข้อมูลด้วยวิธีการใด โครงสร้าง ข้อมูลที่เหมาะสมก็เป็นสิ่งที่สําคัญมากอยู่ดี แนวความคิดในเรื่องโครงสร้างข้อมูลนี้ ส่งผลกับการพัฒนา วิธีการมาตรฐานต่างๆ ในการออกแบบและเขียนโปรแกรมด้วยคอมพิวเตอร์ จะเห็นได้ว่าในการพัฒนา โปรแกรมด้วยคอมพิวเตอร์หลายภาษาโปรแกรมนั้นได้พัฒนารวมเอาโครงสร้างข้อมูลไว้เป็นส่วนหนึ่งของ ระบบ 1.1 ชนิดของข้อมูล ข้อมูล (Data) เป็นวัตถุดิบพื้นฐานในการทํางานของระบบคอมพิวเตอร์ โดยกระบวนการต่างๆ จะเกี่ยวข้องกับการประมวลผลข้อมูลจํานวนมาก ในการประมวลผลและการพัฒนาระบบคอมพิวเตอร์ ที่มีประสิทธิภาพและสามารถตอบสนองการทํางานได้อย่างรวดเร็ว จะเกี่ยวข้องกับข้อมูลเป็นส่วนใหญ่ ดังนั้นหากมีการจัดการข้อมูลที่ดี จะช่วยให้การทํางานของระบบคอมพิวเตอร์มีความรวดเร็ว ถูกต้องและ แม่นยํามากขึ้น ซึ่งในการเขียนโปรแกรมคอมพิวเตอร์ด้วยภาษาระดับสูงไม่ว่าจะเป็นภาษาใดจะมีชนิด ของข้อมูลที่ใช้ได้ 2 ประเภทคือ 1. ชนิดข้อมูลมาตรฐาน (Standard Data Type) หรือเรียกว่าข้อมูลพื้นฐาน (Elementary Data Type) เป็นหน่วยที่เล็กที่สุดที่อธิบายลักษณะข้อมูล ชนิดข้อมูลมาตรฐานทีนิยมใช้ บ่อยและนําไปใช้ในการเขียนโปรแกรมด้วยภาษาระดับสูง (High Level Language) เช่น C, C#, Java,
2 PHP, ASP, JSP ได้แก่ จํานวนเต็ม (Integer) ,จํานวนจริง (Real), อักขระ (Character), ตรรกะ (Boolean) เป็นต้น 2. ชนิดข้อมูลเชิงโครงสร้าง(Structured Data Type) เป็นข้อมูลที่เกิดจากข้อมูลพืน้ ฐานหรือข้อมูล เชิงโครงสร้าง เช่น อาเรย์ หรือ แถวลําดับ (Array), เซต (Set), ระเบียน (Record) และแฟ้มข้อมูล (File) เป็นต้น 1.2 โครงสร้างข้อมูลและการแทนที่ข้อมูล โครงสร้างข้อมูล (Data Structure) หมายถึง การรวบรวบรวมข้อมูลไว้เป็นชุดของข้อมูล ที่มีการกําหนดนิยามของความสัมพันธ์ภายในกลุ่มของข้อมูลไว้และ โครงสร้างข้อมูลต้องสามารถ นํามาใช้เขียนขั้นตอนวิธี (Algorithms) เพื่อนํามาช่วยจัดการข้อมูลภายในโครงสร้างข้อมูลได้โครงสร้าง ข้อมูล แสดงถึงความสัมพันธ์ระหว่างข้อมูล ความสัมพันธ์หลักใหญ่ๆ มี 4 แบบ ได้แก่ 1. โครงสร้างข้อมูลแบบเซต (Set) เป็นโครงสร้างที่ข้อมูลแต่ละตัวไม่มีความสัมพันธ์กัน เลย 2. โครงสร้างแบบเชิงเส้น (Linear) เป็นโครงสร้างที่ข้อมูลมีความสัมพันธ์แบบหนึ่งต่อ หนึ่ง (One-To-One Relationship) นั่นคือสามารถระบุถึงข้อมูลตัวถัดไปของข้อมูลได้เพียงตัวเดียว 3. โครงสร้างแบบต้นไม้หรือแบบลําดับขั้น (Tree Or Hierarchical) เป็นโครงสร้างที่ ข้อมูลมีความสัมพันธ์กันแบบหนึ่งต่อหลาย (One-To-Many Relationship) นั่นคือ ข้อมูลตัวหนึ่ง สามารถมีความสัมพันธ์กับข้อมูลในลําดับรองลงไปได้หลายตัว 4. โครงสร้างแบบกราฟหรือเครือข่าย (Graph or Network) เป็นโครงสร้างที่ข้อมูลมี ความสัมพันธ์กันแบบหลายต่อหลาย (Many-To-Many Relationship) นั่นคือ ข้อมูลตัวหนึ่งๆ อาจจะมี ความสัมพันธ์กับข้อมูลตัวอื่น ๆ กี่ตัวก็ได้ ตัวอย่างแผนภาพโครงสร้างข้อมูลทั้งสี่แบบได้แสดงในภาพประกอบที่ 1.1 โครงสร้างข้อมูลแบบเซต โครงสร้างแบบเชิงเส้น โครงสร้างแบบต้นไม้หรือแบบลําดับขั้น
โครงสร้างแบบกราฟหรือเครือข่าย
ภาพประกอบที่ 1.1 โครงสร้างข้อมูล 4 แบบ
3 หมายเหตุ 1. เมื่อพูดถึงความสัมพันธ์แบบเชิงเส้นจะนึกถึงกลุ่มของฟังก์ชัน Pred, Succ และ Ord ซึ่งสามารถใช้ได้กับข้อมูลที่มีโครงสร้างแบบเชิงเส้น 2. โครงสร้างแบบเชิงเส้นแตกต่างจากโครงสร้างแบบอันดับ (Ordered) เมื่อนึกถึง โครงสร้างแบบอันดับ จะนึกถึงกลุ่มของเครื่องหมายเปรียบเทียบ (Relational Operator) เช่น <, <=, <>, > ,>= เป็นต้น ตัวอย่างที่ 1.1 เปรียบเทียบโครงสร้างข้อมูลชนิดจํานวนเต็มและจํานวนจริง ข้อมูลชนิดจํานวน เต็ม (Integer) มีโครงสร้างทั้งแบบอันดับ (Ordered ) และแบบเชิงเส้น (Linear) นั่นคือ สามารถจะ เปรียบเทียบข้อมูลจํานวนเต็มสองจํานวนได้และสามารถจะบอกอันดับถัดไป (Succ) หรืออันดับก่อน หน้า (Pred) หรืออันดับ (Ord) ของข้อมูลที่กําหนดให้ได้ ข้อมูลชนิดจํานวนจริง (Real) มีโครงสร้างแบบ อันดับอย่างเดียวไม่เป็นแบบเชิงเส้น สามารถจะเปรียบเทียบข้อมูลจํานวนจริงสองตัวได้ แต่ถ้ากําหนด ข้อมูลจํานวนจริงให้ตัวหนึ่ง จะไม่สามารถบอกได้ว่า ข้อมูลจํานวนจริงตัวถัดไปคืออะไร เนื่องจาก ระหว่างจํานวนจริงสองจํานวน ไม่ว่าจะใกล้กันเท่าใดจะมีจํานวนจริงซึ่งเป็นจํานวนนับไม่ถ้วนอยู่ ระหว่างจํานวนจริงสองจํานวนนั้น ตัวอย่างที่ 1.2 การแทนโครงสร้างข้อมูลแบบเชิงเส้นในหน่วยความจําสมมุติมีข้อมูล ซึ่งเป็น รายชื่อของคนจํานวน 5 คน คือ กมลพรรณ, พีรภัทร์, ศิรินภา, ดิเรก, และ อุมาวดี รายชื่อเหล่านี้มีความสัมพันธ์กันแบบมีอันดับและแบบเชิงเส้น ดังนั้นจะมีวิธีในการแทนที่ข้อมูล และโครงสร้างของข้อมูลนี้ 3 วิธี คือ วิธีที่ 1 การเข้าถึงข้อมูลแบบลําดับ (Sequential Access) เป็นการเก็บข้อมูลไว้ใน หน่วยความจําที่ใดที่หนึ่งในลักษณะต่อเนื่องดังแสดงในตารางที่ 1.1 ตารางที่ 1.1 การเก็บข้อมูลในหน่วยความจําในลักษณะต่อเนื่องกัน ชื่อ (Name) หมายเลขประจําตําแหน่ง (Address) 1000 กมลพรรณ 1008 พีรภัทร์ 1016 ศิรินภา 1024 ดิเรก 1032 อุมาวดี จากตารางที่ 1.1 สมมุติว่าเราใช้เนื้อที่ 8 ไบต์ในการเก็บชื่อหนึ่ง ๆ การจัดเก็บแบบนี้ยังคงเป็น โครงสร้างแบบเชิงเส้นอยู่ นั่นคือ ถ้าเราทราบตําแหน่งที่อยู่ (Address) ของข้อมูลตัวใด เราสามารถจะ คํานวณตําแหน่งที่อยู่ของข้อมูลตัวก่อนหน้านี้หรือหลังจากนี้ได้ทันที
4 วิธีที่ 2 การเข้าถึงข้อมูลแบบสุ่ม (Random Access) เป็นการเก็บข้อมูลไว้ ณ ตําแหน่งที่อยู่ที่ เป็นฟังก์ชันของอักษรตัวแรกของชื่อ (fl) เช่น 1000+ 8 * [ord(fl) – ord(‘A’)] ซึ่งเป็นวิธีการของ Hashing Function สมมุติชื่อทั้ง 5 ชื่อดังกล่าว เก็บไว้ในหน่วยความจํา ณ ตําแหน่งดังแสดงในตารางที่ 1.2 ตารางที่ 1.2 การเก็บข้อมูลในหน่วยความจําตําแหน่งที่เป็นฟังก์ชันของอักษรตัวแรกของชื่อตัวแปร ชื่อ (Name) หมายเลขประจําตําแหน่ง (Address) 1000 ดิเรก 1008 1016 ศิรินภา 1024 อุมาวดี 1032 กมลพรรณ 1040 พีรภัทร์ จากตารางที่ 1.2 วิธีการแทนที่ข้อมูลในลักษณะแบบนี้ไม่สามารถเก็บโครงสร้างของข้อมูลได้ นั่นคือ ถ้าต้องการทราบว่าใครต่อจากดิเรก จะไม่สามารถบอกได้ การแทนที่ข้อมูลแบบนี้จะมีประโยชน์ ตรงที่ว่า ถ้าต้องการค้นหาข้อมูลที่ชื่อ อุมาวดี สามารถจะทําการคํานวณได้โดยตรง (โดยการใช้อินเวอร์ส ฟังก์ชันของการจัดเก็บ) ซึ่งเป็นการเข้าถึงข้อมูลแบบสุ่ม (Random Access) แต่ถ้าใช้วิธีการจัดเก็บตามวิธี ที่ 1 ต้องทําการค้นหาจากชื่อแรกไปเรื่อยๆ จนพบชื่อที่ต้องการ ซึ่งเป็นการเข้าถึงข้อมูลแบบลําดับ (Sequential Access) วิธีที่ 3 การเก็บข้อมูลไว้ ณ แอดเดรสที่เป็นฟังก์ชันของอักษรตัวแรกของชื่อ (fl) แต่เพิ่มฟิลด์ สําหรับเก็บตําแหน่งของข้อมูลอันดับถัดไปด้วย (ซึ่งเป็นการรวมข้อดีของทั้ง 2 วิธีเข้าด้วยกัน) ดังแสดงใน ตารางที่ 1.3 ตารางที่ 1.3 เก็บข้อมูลในหน่วยความจําตําแหน่งที่เป็นฟังก์ชันของอักษรตัวแรกของชื่อตัวแปร และเก็บตําแหน่งของข้อมูลตัวถัดไป ชื่อ (Name) ตําแหน่งข้อมูลถัดไป หมายเลขประจําตําแหน่ง (Address) 1000 ดิเรก 1032 1008 1016 กมลพรรณ 1008 1024 อุมาวดี 1016 1032 พีรภัทร์ 1040 1040 ศิรินภา 1024
5 จากตารางที่ 1.3 จะเห็นได้ว่าวิธีการเก็บข้อมูลในส่วนความจําแบบนี้ จะทําการเก็บที่อยู่ของ ข้อมูลถัดไปด้วยทําให้สามารถเข้าถึงข้อมูลในโครงสร้างได้ ถ้าข้อมูลเริ่มที่ดิเรก ก็สามารถทราบได้ว่า ข้อมูลถัดไปคือ ข้อมูลชื่อใด โดยเก็บข้อมูลเรียงลําดับตามรายชื่อดังนี้ ดิเรก, พีรภัทร์, ศิรินภา, อุมาวดี, กมลพรรณ เป็นต้น โดยสรุป จะเห็นว่าในการแทนที่ข้อมูลในหน่วยความจําเพื่อให้คงโครงสร้างแบบเชิงเส้นมี 2 วิธี คือวิธีที่ 1 ซึ่งเป็นวิธีการแบบแถวลําดับหรืออาเรย์ (Array) โดยอันดับของข้อมูลแสดงด้วยตําแหน่งของ ข้อมูลในอาเรย์และวิธีที่ 3 ซึ่งเป็นวิธีการแบบลิงค์ลิสต์ (Linked List) ซึ่งอันดับของข้อมูลหาได้โดย ติดตามลิงค์ ชนิดข้อมูลแบบอาเรย์และแบบลิงค์ลิสต์เป็นชนิดข้อมูลพื้นฐานที่ใช้สําหรับสร้างชนิดข้อมูล อื่นๆ ต่อไป 1.3 ชนิดข้อมูลมาตรฐาน ชนิดข้อมูลมาตรฐานแบ่งออกเป็น 3 ประเภท ได้แก่ 1. ชนิดข้อมูลแบบมีอันดับ (Ordinal Data Type) ได้แก่ Char, Integer, Boolean, Enumerated,และ Subrange 2. ชนิดข้อมูลจํานวนจริง ได้แก่ Real 3. ชนิดข้อมูลแบบพอยเตอร์ (Pointer) ค่าของข้อมูล (Values) ของชนิดข้อมูลแบบมีอันดับ (Ordinal Data Type) แต่ละแบบมี ดังนี้ Char ค่าของข้อมูลขึ้นอยู่กับรหัสที่เลือกใช้ เช่น ASCII หรือ EBCDIC หรือ CDC Integer - maxint ถึง +maxint Boolean False และ True Enumerated ขึ้นอยู่กับผู้ใช้กาํ หนด Subrange ขึ้นอยู่กับผู้ใช้กาํ หนด เป็น Subrange ของชนิดข้อมูลแบบมีอันดับ โครงสร้างของข้อมูลเป็นแบบเชิงเส้น การดําเนินงานของโครงสร้างข้อมูลแบบเชิงเส้นมี ดังนี้ ตารางที่ 1.4 โครงสร้างของข้อมูลเป็นแบบเชิงเส้นและการดําเนินงานของโครงสร้างข้อมูลแบบเชิงเส้น ชนิดข้อมูล รูปแบบ การดําเนินการ (Operations) Char Relational =, <>, <, >, <=, >=, in Ordinal functions ord, succ, pred Textfile I/O read, readln, write, writeln Integer Arithmetic +, -, *, /, div, mod
6 ตารางที่ 1.4 โครงสร้างของข้อมูลเป็นแบบเชิงเส้น และการดําเนินงานของโครงสร้างข้อมูลแบบเชิงเส้น (ต่อ) ชนิดข้อมูล รูปแบบ การดําเนินการ (Operations) Relational =, <>, <, >, <=, >=, in Ordinal functions ord, succ, pred Arithmetic functions abs, sqr, sqrt, sin, cos, arctan, exp, ln Textfile I/O read, readln, write, writeln Boolean Boolean and, or, not Relational =, <>, <, >, <=, >=, in Ordinal functions ord, succ, pred ชนิดข้อมูล รูปแบบ การดําเนินการ (Operations) Textfile I/O write, writeln Enumerated Relational =, <>, <, >, <=, >=, in Ordinal functions ord, succ, pred Subrange Relational =, <>, <, >, <=, >=, in Ordinal functions ord, succ, pred 1. ค่าของข้อมูลชนิดข้อมูลจํานวนจริง (Real) เป็นค่าจํานวนจริง โครงสร้างของข้อมูล ค่าของข้อมูลไม่มีความสัมพันธ์กัน การดําเนินงานแสดงได้ตามตารางที่ 1.5 ตารางที่ 1.5 ชนิดข้อมูลจํานวนจริง รูปแบบ และการดําเนินการ (Operations) ชนิดข้อมูล รูปแบบ การดําเนินการ (Operations) Real Arithmetic +, -, *, /, div, mod Relational =, <>, <, >, <=, >=, in Transfer functions trunc, round Arithmetic functions
abs, sqr, sqrt, sin, cos, arctan, exp, ln Textfile I/O read, readln, write, writeln 2. ค่าของข้อมูลชนิดของข้อมูลแบบพอยเตอร์ (Pointer) เป็น Nil หรือ Null คือไม่มีค่า หรือมีค่าเป็นตําแหน่งที่อยู่ของตัวแปร โครงสร้างของข้อมูล ไม่มีความสัมพันธ์กัน การดําเนินงาน ดังนี้
7 ตารางที่ 1.6 ชนิดข้อมูลแบบพอยน์เตอร์ รูปแบบ และการดําเนินการ (Operations) การดําเนินการ (Operations) Pointer Relational =, <> Dynamic allocation new, dispose 3. ค่าของข้อมูลชนิดข้อมูลแบบอาเรย์ (Array) ข้อมูลทุกตัวที่อยู่ในอาร์เรย์จะต้องเป็น ข้อมูลชนิดเดียวกันเท่านั้น เช่น ถ้าเป็นอาร์เรย์ชนิดจํานวนเต็ม ข้อมูลทุกตัวในอาร์เรย์ก็ต้องเป็นชนิด จํานวนเต็ม ไม่สามารถเก็บข้อมูลต่างชนิดกันได้ โครงสร้างของข้อมูลเป็นแบบเชิงเส้น และมีดัชนี (Index) เป็นตัวกําหนดความสัมพันธ์กับข้อมูล ดัชนีต้องมีชนิดเป็นชนิดข้อมูลแบบมีอันดับ การดําเนินงาน มี 2 กลุ่มใหญ่ ๆ ได้แก่ การเรียงลําดับและการค้นหา 4. ค่าของข้อมูลชนิดข้อมูลแบบสตริงค์ (String) ข้อมูลชนิดตัวอักษรหลายตัวหรือกลุ่ม ของตัวอักษร โดยประกอบด้วย ตัวอักษร ตัวเลข ตัวอักษรพิเศษ ซึ่งเป็นชนิดข้อมูลที่ใช้บ่อยมากในการ เขียนโปรแกรม มีรูปแบบและการดําเนินงานดังตารางที่ 1.7 ตารางที่ 1.7 ชนิดข้อมูลแบบสตริงค์ รูปแบบ และการดําเนินการ (Operations) รูปแบบ การดําเนินการ (Operations) ชนิดข้อมูล String Relational =, <>, <, >, <=, >=, in Textfile I/O read, readln, write, writeln 5. ค่าของข้อมูลชนิดข้อมูลแบบเรคคอร์ด (Record) หน่วยของข้อมูลที่เกิดจากการ นําเอาฟิลด์หลาย ๆ ฟิลด์ มารวมกันเพื่อแสดงรายละเอียดข้อมูลในเรื่องใดเรื่องหนึ่ง เช่น เรคคอร์ดหนึ่งๆ ของพนักงานประกอบด้วย ฟิลด์ ต่าง ๆ เช่น รหัสพนักงาน ชื่อ แผนก เงินเดือน เป็นต้นการดําเนินการ มี 2 กลุ่มคือ การเรียงลําดับและการค้นหา 6. ค่าของข้อมูลชนิดข้อมูลแบบเซต (Set) หน่วยของข้อมูลที่ไม่อนุญาตให้ซ้ํากันแต่ไม่ เรียงลําดับสมาชิก เซตจึงถูกนํามาใช้ในการตรวจสอบความซ้ํากันของข้อมูลจะเป็นค่าที่ผใู้ ช้กําหนดซึ่ง ต้องเป็นชนิดแบบมีอันดับ โครงสร้างของข้อมูลแต่ละตัวไม่มีความสัมพันธ์กัน มีการดําเนินงานดังนี้ Set Operators * (Intersection), + (Union), - (Complement) Relational Operators =, <>, <, >, <=, >=, in 7. ชนิดข้อมูลแบบไฟล์ (File) ค่าของข้อมูลจะเป็นค่าที่ผู้ใช้กําหนดและจะมีชนิดเป็น อะไร ก็ได้ แต่ต้องมีชนิดเดียวกัน ซึ่งจะเหมือนกับอาเรย์ ไฟล์ต่างกับอาเรย์ตรงที่ไฟล์จะมีขนาดเท่าใดก็ ได้ แต่อาเรย์ต้องมีการกําหนดขนาดที่แน่นอน การเข้าถึงข้อมูลแบบไฟล์จะเป็นแบบเข้าถึงตามลําดับ (Sequential Access) หรือเป็นการเข้าถึงข้อมูลแบบสุ่ม (Random Access) ก็ได้ โครงสร้างของข้อมูล เป็นแบบเชิงเส้น มีการดําเนินงานดังนี้ File handling rewrite, reset, put, get, write, read, eof ชนิดข้อมูล
รูปแบบ
8 8. ชนิดข้อมูลแบบเท็กซ์ (Text) ค่าของข้อมูล เป็น char โครงสร้างของข้อมูลเป็นแบบ เชิงเส้น มีการดําเนินงานดังนี้ File handling rewrite, reset, put, get, write, read, eof, writeln, readln, page, eoln 1.4 ประโยชน์ของโครงสร้างข้อมูลและการนําไปใช้ โครงสร้างข้อมูลใช้ในการจัดเก็บข้อมูลเพื่อให้ข้อมูลเป็นระบบและใช้สําหรับการจัดเรียงข้อมูล จํานวนมากอย่างถูกวิธี โครงสร้างข้อมูลสามารถนํามาใช้ร่วมกับขั้นตอนวิธีเพื่อใช้สําหรับปฏิบัติการกับ ข้ อ มู ล ที่ เ ก็ บ ในลั ก ษณะต่ า งๆ เช่ น การเพิ่ ม ข้ อ มู ล (Insert), การลบข้ อ มู ล (Delete), การค้นหาข้อมูล(Searching) เป็นต้น ซึ่งสามารถช่วยให้กระบวนการทํางานภายในระบบคอมพิวเตอร์ เป็นไปอย่างรวดเร็วมีประสิทธิภาพมากขึ้น นอกจากนี้ยังพบว่าโครงสร้างข้อมูลในแต่ละชนิดนั้นมีความ สามารถในการจัดการข้อมูลที่มีความแตกต่างกัน ดังนั้นการนําเอาโครงสร้างข้อมูลมาใช้งานได้อย่างมี ประสิทธิภาพควรคํานึงถึงความเหมาะสมกับลักษณะงานด้วย 1.5 สรุป โครงสร้างข้อมูล (Data Structure) หมายถึง การรวบรวบรวมข้อมูลไว้เป็นชุดของข้อมูล ที่มี การกําหนดนิ ยามของความสั ม พันธ์ภายในกลุ่ ม ของข้อมูล ไว้ แ ละ โครงสร้างข้อมู ล ต้ องสามารถ นํามาใช้เขียนขั้นตอนวิธี (Algorithms) เพื่อนํามาช่วยจัดการข้อมูลภายในโครงสร้างข้อมูลได้โครงสร้าง ข้อมูล แสดงถึงความสัมพันธ์ระหว่างข้อมูล ความสัมพันธ์หลักใหญ่ๆ มี 4 แบบ ได้แก่โครงสร้างข้อมูล แบบเซต (Set) โครงสร้างแบบเชิงเส้น (Linear) โครงสร้างแบบต้นไม้หรือแบบลําดับขั้นและโครงสร้าง แบบกราฟหรือเครือข่าย (Graph or Network) โครงสร้างข้อมูลแบบต่างๆ ซึ่งเป็นส่วนที่สําคัญในการทํางานของระบบคอมพิวเตอร์ การนําเอา ข้อมูลประเภทต่างๆ เข้ามาจัดการโดยอาศัยคอมพิวเตอร์เป็นสิ่งที่ต้องคํานึงถึง สําหรับกระบวนการ ออกแบบโปรแกรมคอมพิวเตอร์ การเลือกโครงสร้างข้อมูลที่เหมาะสมเป็นสิ่งสําคัญที่ต้องคํานึงถึง ใน การเขียนโปรแกรมภาษาระดับสูงไม่ว่าจะเป็นภาษาใดจะมีชนิดของข้อมูลที่ใช้ได้ 2 ประเภทคือ 1. ชนิดข้อมูลมาตรฐาน (Standard Data Type) หรือเรียกว่าข้อมูลพื้นฐาน (Elementary Data Type) เป็นหน่วยที่เล็กที่สุดที่อธิบายลักษณะข้อมูลได้แก่ จํานวนเต็ม (Integer) จํานวนจริง (Real) อักขระ (Character) ตรรกะ (Boolean) เป็นต้น 2. ชนิดข้อมูลเชิงโครงสร้าง (Structured Data Type) เป็นข้อมูลที่เกิดจากข้อมูลพื้นฐาน หรือข้อมูลเชิงโครงสร้าง ได้แก่ แถวลําดับ (Array) เซต (Set) ระเบียน (Record) และแฟ้มข้อมูล (File) เป็นต้น
9 คําถามท้ายบทที่ 1 1. ในการเขียนโปรแกรมภาษาระดับสูงไม่ว่าจะเป็นภาษาใดจะมีชนิดของข้อมูลทีใ่ ช้ไดกี่ประเภทได้แก่ อะไรบ้าง 2. จงยกตัวอย่างชนิดข้อมูลเชิงโครงสร้าง (Structured Data Type) มา 2 ชนิด โดยอธิบายลักษณะของ ข้อมูลมาพอสังเขป 3. โครงสร้างข้อมูล (Data Structure) คืออะไร 4. ชนิดข้อมูลมาตรฐานแบ่งออกเป็นกี่ประเภท อะไรบ้าง 5. ชนิดข้อมูลแบบอาเรย์ (Array) มีคุณสมบัติอย่างไร 6. อธิบายความแตกต่างระหว่างชนิดข้อมูลมาตรฐานและชนิดข้อมูลเชิงโครงสร้าง 7. ยกตัวอย่างค่าของข้อมูลชนิดข้อมูลแบบสตริงค์ (String) 8. อธิบายลักษณะสําคัญของโครงสร้างข้อมูลแบบเชิงเส้น พร้อมยกตัวอย่าง 9. อธิบายลักษณะสําคัญของโครงสร้างข้อมูลแบบไม่เชิงเส้น พร้อมยกตัวอย่าง 10. ยกตัวอย่างที่แสดงให้เห็นถึงความสําคัญของการศึกษาโครงสร้างข้อมูล การนําโครงสร้าง ข้อมูลไปใช้งาน พร้อมอธิบายรายละเอียด