ความหมายของโครงสร้างข้อมูล
 
     

คำว่า “โครงสร้างข้อมูล (Data Structures) เกิดจากคำสองคำคือ “โครงสร้าง” และ “ข้อมูล” ซึ่งคำว่า“โครงสร้าง” เป็นความสัมพันธ์ระหว่างสมาชิกในกลุ่ม ดังนั้นโครงสร้างข้อมูล จึงหมายถึงความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้างนั้น ๆ สิ่งพื้นฐานในการประมวลผลข้อมูลด้วยคอมพิวเตอร์ก็คือ ข้อมูล (Data) ดังนั้นการศึกษาถึงความสัมพันธ์ของข้อมูล จึงมีความสำคัญอย่างมากในศาสตร์คอมพิวเตอร์ (Computer Science)

โครงสร้างข้อมูล (File Structure) หมายถึง ลักษณะการจัดแบ่งพิกัดต่าง ๆ ของข้อมูลสำหรับแต่ละระเบียน (Record) ในแฟ้มข้อมูลเพื่อให้คอมพิวเตอร์สามารถรับไปประมวลผลได้ ประกอบด้วยส่วนต่าง ๆ ดังนี้

1. หน่วยข้อมูล (Data Item) หมายถึงส่วนที่เล็กที่สุดของข้อมูล เช่น ตัวเลข ตัวอักษร หรือ สัญลักษณ์พิเศษ จะยังไม่มีความหมายในตัวเอง เล่น เลข 9 อักษร ก เป็นต้น

2. ฟิลด์ข้อมูล (Data Field) หมายถึง การนำเอาหน่วยข้อมูลที่สำคัญและต้องการศึกษามาไว้ด้วยกัน เพื่อเปรียบเทียบกัน เช่น ชื่อ - สกุล คะแนนการสอบครั้งที่ 1 เงินเดือน ซึ่ง ชื่อ สกุล และเงินเดือน คือ 1 ฟิลด์

3. เรคอร์ดข้อมูล (Data Record) หมายถึง การนำฟิลด์หลายฟิลด์มารวมกลุ่มกัน เช่น นักศึกษาแต่ละคน จะมีข้อมูล ชื่อ สกุล วันเดือนปีเกิด อายุ เพศ ข้อมูลของนักศึกษาแต่ละคนคือ 1 เรคอร์ด

4. แฟ้มข้อมูล (Data File) เกิดจากการนำระเบียนหรือเรคอร์ด หลาย ๆ เรคอร์ดที่เกี่ยวข้องกันในด้านใดด้านหนึ่งมารวมกัน เช่น แฟ้มข้อมูลของนักเรียนห้องหนึ่งจำนวน 20 คน ทุกคนต่างก็มีข้อมูล คือ ชื่อ สกุล วันเดือนปีเกิด อายุ เพศ ศาสนา ข้อมูลของนักเรียนทั้งหมดคือ แฟ้มข้อมูล
5. ฐานข้อมูล (Data base) เกิดจากการนำแฟ้มหลาย ๆ แฟ้มข้อมูลเข้าด้วยกันโดยที่แฟ้มข้อมูลแต่ละแฟ้มจะมีความสัมพันธ์กันหรือไม่ก็ตาม ทำให้ข้อมูลไม่ซ้ำซ้อนกัน และสะดวกรวดเร็วในการใช้งาน
 

2.3 โครงสร้างข้อมูลในภาษาคอมพิวเตอร์

โครงสร้างข้อมูลในภาษาคอมพิวเตอร์ที่ใช้กันอยู่ในปัจจุบันจำแนกออกเป็น 2 ประเภท
ซึ่งแสดงการจำแนกโครงสร้างข้อมูลได้ดังรูปที่ 2.1

รูปที่ 2.1 โครงสร้างข้อมูลในภาษาคอมพิวเตอ

2.3.1 โครงสร้างข้อมูลทางกายภาพ

โครงสร้างข้อมูลทางกายภาพ (physical data structures) เป็นโครงสร้างข้อมูลทั่วไปที่มีใช้ในภาษาคอมพิวเตอร์
ซึ่งแบ่งออกเป็นข้อมูล 2 ประเภทตามลักษณะข้อมูล ดังแสดงในรูปที่ 2.2

รูปที่ 2.2 โครงสร้างข้อมูลทางกายภาพ

2.3.1.1 ข้อมูลเบื้องต้น (primitive data types) เป็นข้อมูลพื้นฐานซึ่งมีโครงสร้างข้อมูลไม่ซับซ้อน
จะต้องมีในภาษาคอมพิวเตอร์ทุกภาษา ตัวอย่างของข้อมูลประเภทนี้ เช่น
- จำนวนเต็ม (integer)
- จำนวนจริง (real)
- ตัวอักขระ (character)
2.3.1.2 ข้อมูลโครงสร้าง (structured data types) เป็นข้อมูลที่มีโครงสร้างสลับซับซ้อน เกิดจากการ
นำโครงสร้างข้อมูลเบื้องต้นมาประกอบกันเป็นโครงสร้างข้อมูลที่หลากหลายขึ้น ข้อมูลที่ใช้ในเครื่องคอมพิวเตอร์ยุคแรกเป็น
ข้อมูลเบื้องต้นเท่านั้น แต่ในปัจจุบันภาษาคอมพิวเตอร์เกือบทุกภาษามีข้อมูลโครงสร้างด้วยแทบทั้งสิ้น ตัวอย่างข้อมูลโครงสร้าง
เช่น
- แถวลำดับ (array)
- เซต (set)
- ระเบียนข้อมูล (record)
- แฟ้มข้อมูล (file)

2.3.2 โครงสร้างข้อมูลทางตรรกะ
โครงสร้างข้อมูลทางตรรกะ (logical data structures) เป็น โครงสร้างข้อมูลที่เกิดจากจินตนาการของ
ผู้ใช้เพื่อใช้แก้ปัญหาในโปรแกรมที่สร้างขึ้น จำแนกได้เป็น 2 ประเภท ดังแสดงในรูปที่ 2.3

รูปที่ 2.3 โครงสร้างข้อมูลทางตรรกะ

2.3.2.1 โครงสร้างข้อมูลแบบเชิงเส้น (linear data structures) เป็นชนิดข้อมูลที่ความสัมพันธ์ของข้อมูล
เรียงต่อเนื่องกัน โดยข้อมูลตัวที่ 2 อยู่ต่อจาก ข้อมูลตัวที่ 1 ข้อมูลตัวที่ 3 อยู่ต่อจากข้อมูลตัวที่ 2 และข้อมูลตัวที่ n อยู่ต่อจาก
ข้อมูลตัวที่ n - 1 (ดูรายละเอียดเพิ่มเติมได้ในบทที่ 5) ตัวอย่างโครงสร้างข้อมูลแบบเชิงเส้น เช่น
- ลิสต์ (list)
- สแตก (stack)
- คิว (queue)
- ดีคิว (deque)
- สตริง (string)

2.3.2.2 โครงสร้างข้อมูลแบบไม่ใช่เชิงเส้น (non-linear data structures) เป็นชนิดข้อมูลที่ข้อมูลแต่ละตัวสามารถ
มีความสัมพันธ์กับข้อมูลอื่นได้หลายตัว (ดูรายละเอียดเพิ่มเติมได้ในบทที่ 7) ตัวอย่างโครงสร้างข้อมูลแบบไม่ใช่เชิงเส้น
- ทรี (tree)
- กราฟ (graph

2.4 การแทนที่ข้อมูลในหน่วยความจำหลัก
การประมวลผลข้อมูลด้วยคอมพิวเตอร์ ข้อมูลที่ต้องการประมวลผลจะถูกนำไปเก็บในหน่วยความจำหลักเพื่อประมวลผล
ในภาษาคอมพิวเตอร์ระดับสูงจะต้องมีวิธีการจัดการกับหน่วยความจำหลัก เพื่อนำหน่วยความจำหลักไปใช้ในโครงสร้างข้อมูลนั้น
และเมื่อไม่มีการใช้เนื้อที่ในหน่วยความจำหลักนั้นแล้วควรจะต้องมีการคืนเนื้อที่ในหน่วยความจำหลักด้วย เพื่อนำเนื้อที่หน่วยความจำหลัก
ที่ไม่ได้ใช้สามารถนำกลับมาใช้ใหม่ได้ โดยทั่วไปการเขียนโปรแกรมคอมพิวเตอร์มีการแทนที่ข้อมูลในหน่วยความจำหลักอยู่ 2 วิธี คือ

2.4.1 การแทนที่ข้อมูลแบบสแตติก
การแทนที่ข้อมูลแบบสแตติก (static memory representation) เป็นการแทนที่ข้อมูลที่มีการจองเนื้อที่แบบคงที่แน่นอน
การแทนที่แบบนี้ต้องมีการกำหนดขนาดก่อนการใช้งาน ข้อเสียของการแทนที่ด้วยวิธีนี้ก็คือไม่สามารถปรับขนาดให้เพิ่มขึ้นหรือลดลงได้
ไม่สามารถเก็บข้อมูลเกินขนาดเนื้อที่ที่กำหนดไว้ และถ้ากำหนดขนาดเนื้อที่ไว้มากเกินจำเป็นทั้ง ๆ ที่มีข้อมูลอยู่จำนวนน้อยจะทำให้สูญเสีย
เนื้อที่โดยเปล่าประโยชน์ โครงสร้างข้อมูลที่มีการแทนที่ในหน่วยความจำหลักด้วยวิธีนี้คือ แถวลำดับ

2.4.2 การแทนที่ข้อมูลแบบไดนามิก
การแทนที่ข้อมูลแบบไดนามิก (dynamic memory representation) เป็นการแทนที่ข้อมูลที่ไม่ต้องจองเนื้อที่
และขนาดของเนื้อที่ที่นำมาใช้สามารถยืดหยุ่นได้ตามความต้องการของผู้ใช้ นั่นคือถ้าข้อมูลมีน้อยก็ใช้เนื้อที่น้อย และถ้าข้อมูลมีมาก
ก็สามารถใช้เนื้อที่มากตามที่ใช้จริงได้ นอกจากนั้นส่วนเนื้อที่ในหน่วยความจำหลักที่ไม่ใช้แล้วสามารถส่งคืนเพื่อกลับมาใช้ใหม่ได้อีก
ภาษาคอมพิวเตอร์ระดับสูงบางภาษาเท่านั้นที่สามารถแทนที่ข้อมูลด้วยวิธีนี้ เช่น ภาษาปาสคาล ภาษาซี ภาษาพีแอลวัน และ
ภาษาอัลกอล เป็นต้น สำหรับโครงสร้างข้อมูลที่มีการแทนที่ในหน่วยความจำหลักแบบ ไดนามิก คือ ตัวชี้ หรือ พอยน์เตอร์ (pointer)

   
         
   
     
Free Web Hosting