บทที่ 1...

6
บทที1 ความรู้เบื้องต้นเกี่ยวโครงสร้างข้อมูล (Meaning of Data Structure) Data structure (โครงสร้างข้อมูล) เป็นรูปแบบพิเศษสําหรับการจัดและเก็บข้อมูล ประเภท โครงสร้างข้อมูลทั่วไปรวมถึง array, ไฟล์, เรคคอร์ด, ตารางข้อมูล, tree และอื่นๆ โครงสร้างข้อมูลต่างๆ ได้รับการออกแบบให้จัดข้อมูลให้เหมาะสมกับวัตถุประสงค์เฉพาะ ดังนั้นสามารถเข้าถึงและทํางาน ภายในวิธีการเหมาะสม ในโปรแกรมคอมพิวเตอร์ โครงสร้างข้อมูลอาจจะได้รับการเลือกหรือออกแบบ ให้เก็บข้อมูลสําหรับวัตถุ ประสงค์ของการทํางานด้วยอัลกอริทึมหลากหลาย โครงสร้างข้อมูล (Data Structure) คือ รูปแบบของการจัดระเบียบของข้อมูล ซึ่งมีอยู่หลาย รูปแบบ เช่น เขตข้อมูล(Field), แถวลําดับ(Array), ระเบียน(Record), ต้นไม้(Tree), ลิงค์ลิสต์(Link List) เป็นต้น โครงสร้างข้อมูล (Data Structure) - บิท (Bit) คือข้อมูลที่มีขนาดเล็กที่สุดป็นข้ อมูลที่เครื่องคอมพิวเตอร์เข้าใจและใช้งานได้ ได้แก่ 0 หรือ1 - ไบท์ (Byte) หรือ อักขระ (Character) คือ ตัวเลข หรือ ตัวอักษร หรือ สัญลักษณ์พิเศษ จํานวน 1 ตัว - ฟิลด์ (Field) หรือ เขตข้อมูล คือ ไบท์ หรือ อักขระตั้งแต่ 1 ตัวขึ้นไปรวมกันเป็นฟิลด์ เช่น เลขประจําตัว หรือ ชื่อพนักงาน - เรคคอร์ด (Record) หรือระเบียน คือ ฟิลด์ตั้งแต่ 1 ฟิลด์ขึ้นไปที่มีความสัมพันธ์เกี่ยวข้องกันมา รวมกัน - ไฟล์ (File) หรือ แฟ้มข้อมูล คือ หลายเรคคอร์ดมารวมกัน เช่น ข้อมูลที่อยู่นักเรียนมารวมกัน - ฐานข้อมูล (Database) คือ หลายไฟล์ข้อมู ลมารวมกัน เช่น ไฟล์ข้อมูลนักเรียนมารวมกัน ในงานทะเบียน แล้วรวมกับไฟล์การเงิน

Upload: others

Post on 01-Nov-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: บทที่ 1 ความรู้เบื้องต้นเกี่ยวโครงสร้างข้อมูล Meaning of ... · บทที่ 1 ความรู้เบื้องต้นเกี่ยวโครงสร้างข้อมูลMeaning

บทที่ 1

ความรู้เบื้องต้นเกี่ยวโครงสร้างข้อมูล (Meaning of Data Structure)  

Data structure (โครงสร้างข้อมูล) เป็นรูปแบบพิเศษสําหรับการจัดและเก็บข้อมูล ประเภท โครงสร้างข้อมูลทั่วไปรวมถึง array, ไฟล์, เรคคอร์ด, ตารางข้อมูล, tree และอื่นๆ โครงสร้างข้อมูลต่างๆ ได้รับการออกแบบให้จัดข้อมูลให้เหมาะสมกับวัตถุประสงค์เฉพาะ ดังนั้นสามารถเข้าถึงและทํางาน ภายในวิธีการเหมาะสม ในโปรแกรมคอมพิวเตอร์ โครงสร้างข้อมูลอาจจะได้รับการเลือกหรือออกแบบ ให้เก็บข้อมูลสําหรับวัตถุ ประสงค์ของการทํางานด้วยอัลกอริทึมหลากหลาย

โครงสร้างข้อมูล (Data Structure) คือ รูปแบบของการจัดระเบียบของข้อมูล ซึ่งมีอยู่หลาย รูปแบบ เช่น เขตข้อมูล(Field), แถวลําดับ(Array), ระเบียน(Record), ต้นไม้(Tree), ลิงค์ลิสต์(Link List) เป็นต้น

โครงสร้างข้อมูล (Data Structure) - บิท (Bit) คือข้อมูลที่มีขนาดเล็กที่สุดเป็นขอ้มูลที่เครื่องคอมพิวเตอร์เข้าใจและใช้งานได้ ได้แก่ 0 หรือ1 - ไบท์ (Byte) หรือ อักขระ (Character) คือ ตัวเลข หรือ ตัวอักษร หรือ สัญลักษณ์พิเศษ จํานวน 1 ตัว - ฟิลด์ (Field) หรือ เขตข้อมูล คือ ไบท์ หรือ อักขระตั้งแต่ 1 ตัวขึ้นไปรวมกันเป็นฟิลด์ เช่น เลขประจําตัว หรือ ชื่อพนักงาน - เรคคอร์ด (Record) หรือระเบียน คือ ฟิลด์ตั้งแต่ 1 ฟิลด์ขึ้นไปที่มีความสัมพันธ์เกี่ยวข้องกันมา รวมกัน - ไฟล์ (File) หรือ แฟ้มข้อมูล คือ หลายเรคคอร์ดมารวมกัน เช่น ข้อมูลที่อยู่นักเรียนมารวมกัน - ฐานข้อมูล (Database) คือ หลายไฟล์ข้อมลูมารวมกัน เช่น ไฟล์ข้อมูลนักเรียนมารวมกัน ในงานทะเบียน แล้วรวมกับไฟล์การเงิน

Page 2: บทที่ 1 ความรู้เบื้องต้นเกี่ยวโครงสร้างข้อมูล Meaning of ... · บทที่ 1 ความรู้เบื้องต้นเกี่ยวโครงสร้างข้อมูลMeaning

  2  

• โครงสร้างข้อมูลอาร์เรย ์ใช้เก็บอิลีเมนต์ทีม่ีชนิดข้อมูลชนิดเดียวกันจํานวนหนึ่งแต่มีลําดับเฉพาะ อิลีเมนต์ของอาร์เรย์เข้าถึงโดยใช้เลขจํานวนเต็มระบุตําแหน่งของอิลีเมนต์ที่ต้องการ อารเ์รย์อาจมี ขนาดจํากัด หรืออาจขยายขนาดได ้

• เรคคอร์ด (อาจเรียกเป็น ทูเปิ้ล หรือสตรัค) เรคคอร์ดเป็นโครงสร้างข้อมูลชนิดหนึ่งในกลุ่ม โครงสร้างข้อมูลแบบง่าย ค่าข้อมูลของมันเป็นค่าซึ่งสามารถใส่ค่าของเรคคอร์ดอื่น โดยปกติเรคคอร์ด มีขนาดคงที่ และเรียงลําดับ ใช้ชื่อเป็นดัชนี อิลีเมนต์ของเรคคอร์ดมัดเรียกว่าฟิลด์ หรือ สมาชิก

• แฮช (Hash) หรือ ดิกชันนารี หรือ แมพ เป็นโครงสร้างข้อมูลที่ยืดหยุ่นมากกว่าเรคคอร์ด ซึ่งการเก็บข้อมูล จะเป็นแบบคู่ของ ชื่อ-ค่า และสามารถเพิ่มหรือลบข้อมูลได้อย่างอิสระ

• ยูเนียน (Union) การนิยามยูเนียน จะระบุจํานวนของชนิดข้อมูลดั้งเดิมที่อาจใช้ใส่อินสแตนท์ เช่น "float หรือ long integer" ยูเนียนแตกต่างจากเรคคอร์ด คือ เรคคอร์ดสามารถใส่ข้อมูลได้ทั้งชนิด float และ integer แต่ยูเนียนสามารถใช้ใส่ข้อมูลได้ชนิดเดียว

• แท็กยูเนียน (tagged union) (มักเรียกว่า แวเรียน แวเรียนเรคคอร์ด หรือดิสจอยส์ยูเนียน) เป็นโครงสร้างที่บรรจุฟิลด์เพิ่มเติมที่ชี้ชนิดข้อมูลป้จจุบันของมัน เพื่อการขยายชนิดข้อมูลอย่างปลอดภัย

• เซต (Set) เป็นโครงสร้างข้อมูลนามธรรมซึ่งสามารถเก็บค่าเฉพาะ โดยไม่ต้องมีลําดับ และไม่มีค่า ที่ซ้ํากัน ค่าที่เก็บในเซต ไม่สามารถนําออมาได้ แต่จะใช้การทดสอบว่าค่าที่ต้องการมีในเซตหรือไม่ และคำตอบ ที่ได้เป็นค่าบูลีน ว่ามีหรือไม่ม ี

• วัตถุ (Object) เป็นโครงสร้างที่บรรจุฟิลด์ข้อมูลได้เช่นเดียวกับเรคคอร์ด และยังมีโค้ดของโปรแกรม สําหรับทํางานกับข้อมูลนั้นด้วย สําหรับโครงสร้างข้อมูลที่ไม่มีโคัด มักเรียกว่า plain old data structure.

โครงสร้างข้อมูลชนิดอื่นๆ สามารถสร้างขึ้นมาได้ แต่มักแปรหรือประกอบขึ้นใหม่จากโครงสร้าง ข้อมูลข้างต้น

หลักการพื้นฐาน โครงสร้างข้อมูลเป็นสิ่งที่ตั้งอยู่บนพื้นฐานของความสามารถของคอมพิวเตอร์ใน การรับและเก็บ

ข้อมูล ณ ตำแหน่งใด ๆ ในหน่วยความจํา ซึ่งระบุโดยแอดเดรส (สตริงของบิตซึ่งสามารถเกบ็ใน หน่วยความจําและจัดการได้โดยโปรแกรม ดังนั้นเรคคอร์ดและอาร์เรย์เป็นโครงสร้างข้อมูล ที่ตั้งบน พื้นฐานการคํานวณแอดเดรสของรายการข้อมูลโดยใช้การดําเนินการทางคณิตศาสตร์ ในขณะที ่โครงสร้างข้อมูลแบบเชื่อมโยง เป็นโครงสร้างข้อมูลที่ตั้งอยู่บนพื้นฐานของ การเก็บแอดเดรส หน่วยความจําของ รายการข้อมูลซึ่งอยู๋ในโครงสร้างของมันเอง โครงสร้างข้อมูลหลายชนิด สร้างขึ้นโดย ใช้หลักการทั้งสองประการ หรือการดําเนินการ โครงสร้างขอมูลบางชนิดรวมวิธีทั้งสองด้วยวิธีการที่ยาก เช่น โครงสร้างข้อมูลแบบ XOR linking การดําเนินการของโครงสร้างข้อมูล  มักต้องการการเขียนเซต ของฟังก์ชัน หรือเซตของการดําเนินการ (procedures) ซึ่งสร้างและดําเนินการกับอินสแตนท์ของ โครงสร้างนั้น ประสิทธิภาพของโครงสร้างข้อมูล ไม่สามารถวิเคราะห์โดยการแยกการดําเนินการ ออกแบบ การสังเกตกระตุ้นแนวคิดเชิงทฤษฎีของชนิดข้อมูลนามธรรม โครงสร้างข้อมูลซี่งถูกนิยามโดย อ้อมจากการดําเนินการที่กระทํากับมัน และคุณสมบัติทางคณิตศาสตร์ของการดําเนินการเหล่านั้น

Page 3: บทที่ 1 ความรู้เบื้องต้นเกี่ยวโครงสร้างข้อมูล Meaning of ... · บทที่ 1 ความรู้เบื้องต้นเกี่ยวโครงสร้างข้อมูลMeaning

  3  

ภาษาที่สนับสนุน ภาษาแอสเซมบลีส่วนใหญ่ และภาษาระดับต่ําบางภาษา เช่น BCPL (Basic Combined

Programming Language) ไม่สนับสนุนการมีโครงสร้างข้อมูล ภาษาโปรแกรมระดับสูงส่วนใหญ่และ ภาษาแอสเซมบลีระดับสูงบางภาษา เช่น MASM มีรูปแบบคําสั่งพิเศษ หรือ ฟังก์ชันบางอย่างที ่สนับสนุนโครงสร้างข้อมูลเช่น เวกเตอร์ vectors (อาร์เรย์หนึ่งมิติ) ในภาษา C หรอือาร์เรย์หลายมิติ ในภาษา ปาสคาล (Pascal) ภาษาโปรแกรมส่วนใหญ่ รวมส่วนสําคัญๆไว้โดยใช้กลไกไลบรารี ซึ่งช่วยให้โครงสร้างข้อมูลนั้นนําไปใช้ในโปรแกรมอื่นๆ ได้

ภาษาโปรแกรมที่ทันสมัยมักมีไลบรารีมาตรฐานซึ่งมีโครงสร้างข้อมูลทั่วไปรวม อยู่ในภาษาด้วย ตัวอย่างเช่น Standard Template Library ของภาษา C++ Java Collections Framework และ Microsoft's .NET Framework เป็นต้น ภาษาโปรแกรมที่ทันสมัยมักสนับสนุนการเขียนโปรแกรม แบบโมดูล หรือการแยกอินเตอร์เฟซของโมดูลไลบรารี ออกจากการดําเนินการ บางภาษาจัดเตรียม ชนิดข้อมูลที่ช่วยให้ผู้ใชซ้่อนรายละเอียดการดําเนินการด้วย เช่น คลาสของภาษา C++ Java และ .NET Framework เป็นต้น โครงสร้างข้อมูลหลายตัวมีเวอร์ชันที่สามารถทํางานพร้อมกัน ซึ่งสามารถคํานวณ หลายๆ เทร็ด (threads) ที่เข้าถึงโครงสร้างข้อมูลพร้อมกันได ้

โครงสร้างข้อมูล(Data Stucture) เป็นวิธีการจัดระเบียบหน่วยข้อมูลย่อยๆ ที่เก็บใว้ใน หน่วยความจําหลัก ของเครื่องคอมพิวเตอร์ และปัจจุบัน ข้อมูลมีอยู่จํานวนมาก ผู้เขียนโปรแกรม จะต้องนําข้อมูลที่เก็บรวบรวมมาได้ จัดเป็นรูปแบบหรือโครงสร้างที่เหมาะสมเพื่อให้ระบบงานนั้น มีประสิทธิภาพ สูงสุด ช่วยให้เครื่องคอมพวิเตอร์ทํางานได้อย่างรวดเร็ว

1.การพัฒนาโปรแกรม (Program Development) การพัฒนาโปรแกรมจัดว่าเป็นสิ่งสําคัญของผู้เขียนโปรแกรมหรือ โปรแกรมเมอร์(programmer)

และนักวิเคราะห์ระบบ (analyst) อย่างมาก เพราะเป็นวิธีการในการอธิบายระบบงานอย่างเป็นขั้นตอน ซึ่งองค์ประกอบของการพัฒนาโปรแกรมมี 7 ขั้นตอน คือ

1.1 ขั้นตอนการวิเคราะห์ปัญหา (Analysis the Problem) - การระบุสิ่งที่ต้องการ (What) - การระบุผลลัพธ์ที่ต้องการ (Output) - การระบุข้อมูลนําเข้า (Input) - การระบุตัวแปรที่ใช ้(Variable) - วิธีการประมวลผล (Process)

1.2 ขั้นตอนการออกแบบโปรแกรม (Design a Program) - ผังงาน (Flowchart) - รหัสเทียม (Pseudo-code)

Page 4: บทที่ 1 ความรู้เบื้องต้นเกี่ยวโครงสร้างข้อมูล Meaning of ... · บทที่ 1 ความรู้เบื้องต้นเกี่ยวโครงสร้างข้อมูลMeaning

  4  

1.3 ขั้นตอนการเขียนโปรแกรม (Coding Program) เป็นการนําเอาผลที่ได้จากขั้นตอนการออกแบบโปรแกรมมาเขียนเป็นคําสั่งด้วยภาษาคอมพิวเตอร์ (Computer Programming Language) สําหรับการเขียนโปรแกรมแต่ละภาษามีกฏไวยากรณ์ (Syntax) ของแต่ละภาษาเป็นตัวกําหนดวิธีการเขียนโดยผู้เขียนโปรแกรมสามารถเลือกใช ้ภาษาโปรแกรมได ้ตามต้องการ ในที่นี้ได้แบ่งโปรแกรมภาษาคอมพิวเตอร์ออกเป็น 5 ยุคได้แก ่- ยุคที่หนึ่ง ภาษาเครื่อง(Machine Language) - ยุคที่สอง ภาษาแอสเซมบลี(Assembly Language) - ยุคที่สาม ภาษาระดับสูง(High Level Language) - ยุคที่สี่ ภาษาระดับสูงมาก(Very High Level Language หรือ 4GLs) - ยุคที่ห้า ภาษาธรรมชาติ(Natural Language หรือ 5GLs)

1.4 ขั้นตอนการตรวจสอบข้อผิดพลาดของโปรแกรม(Testing And Debugging) หลังจากผ่านขั้นตอนการเขียนโปรแกรมด้วยภาษาใดภาษาหนึ่งแล้ว ขั้นตอนนี้เป็นการตรวจสอบ ข้อผิดพลาด (Error) ว่าโปรแกรมที่เขียนขึ้นมานั้นผิดหลักไวยากรณ์ของภาษานั้นๆหรือไม่ ซึ่งการ ตรวจสอบนี ้อาจจะตรวจสอบจากขั้นตอนการทํางานของโปรแกรมโดยทดสอบการ เขียนและผลลัพธ ์ลงบนกระดาษ หรือที่เรียกว่าการตรวจสอบด้วยตนเอง(Self Checking) อีกวิธีหนึ่งก็คือ การตรวจสอบ ด้วยตัวแปลภาษาโปรแกรม(Compile) วิธีการนี้เมื่อพบข้อผิดพลาดก็จะแจ้งให้ทราบ และความผิดพลาด ทั้งหมด สามารถจําแนกได้ 3 ประเภท ดังนี ้ - ความผิดพลาดทางวากนสัมพันธ์(Syntax Error) - ความผิดพลาดขณะทํางาน(Run-Time Error) - ความผิดพลาดทางตรรกะ(Logical Error)

1.5 ขั้นตอนการทดสอบความถูกต้องของโปรแกรม (Testing and Validating) หลังจากทดสอบแล้วว่าโปรแกรมที่เขียนมาใช้งาน ไม่เกิดข้อผิดพลาดใดๆ จะต้องนําโปรแกรมไป ทดสอบความถูกต้องอีกครั้งหนึ่ง ซึ่งขั้นตอนนี้จะเป็นการทดสอบที่ละเอียดมากยิ่งขึ้น เช่น การทดสอบ ความเป็นไปได้ของโปรแกรมว่า ถ้าโปรแกรมให้ใส่วันที่จะต้องลองใส่วันที่ 33 ลงไป แล้วดูว่าโปรแกรม ยอมรับหรือไม่ เพราะในความเป็นจริงแล้ววันที่จะต้องไม่เกิน 31 หรือการป้อนเพศชายลงไปในโปรแกรม แล้วทดลองป้อนจํานวนวันที่ลาคลอดซึ่งเพศจะไม่สามารคลอคลอดได้ นอกจากนั้นอาจจะตรวจสอบดูว่า การป้อนชื่อนั้นจะต้องป้อน เป็นตัวอักษรเท่านั้น ไม่สามารถที่จะป้อนเป็นตัวเลขได้ ถ้าโปรแกรมยอมรับ ตัวเลข ก็ถือว่าไม่มีความถูกต้องเกิดขึ้น

1.6 ขั้นตอนการทําเอกสารของโปรแกรม (Documentation) ขั้นตอนการทําเอกสารของโปรแกรม ถือว่าเปน็ส่วนสําคัญอีกขั้นตอนหนึ่งจะเป็นการอธิบายถึง โปรแกรมที่เขียนขึ้น ว่ามีขั้นตอนการทํางานอย่างไร เพื่อเป็นประโยชน์ต่อโปรแกรมเมอร์ในการพัฒนา โปรแกรมเพิ่มเติมในภายหลัง ซึ่งบางครั้งผู้ทีจ่ะมาพัฒนาโปรแกรมอาจจะไม่ใช่โปรแกรมเมอร์คนเดิม และมีประโยชน์ต่อผู้ที่เข้ามาใช้โปรแกรมครั้งแรกด้วย ดังนั้นเมื่อเขียนโปรแกรมและทดสอบความถูกต้อง เรียบร้อยแล้วจะต้องเขียนขั้นตอนการทําเอกสารของโปรแกรม ซึ่งจะมี 2 แบบ คือ

Page 5: บทที่ 1 ความรู้เบื้องต้นเกี่ยวโครงสร้างข้อมูล Meaning of ... · บทที่ 1 ความรู้เบื้องต้นเกี่ยวโครงสร้างข้อมูลMeaning

  5  

- เอกสารประกอบโปรแกรมสําหรับผู้ใช้(User Documentation) - เอกสารประกอบโปรแกรมสําหรับผู้เขียนโปรแกรม(Program Documentation)

1.7 ขั้นตอนการบํารุงรักษาโปรแกรม (Program Maintenance) ขั้นตอนการบํารุงรักษาโปรแกรม จัดเป็นขั้นตอนสุดท้ายสําหรับผู้พัฒนาโปรแกรมเพราะเป็นขั้นตอน ที่ได้นําเอาโปรแกรมไปใชง้านเรียบร้อยแล้ว ผู้เขียนโปรแกรมจะต้องคอยควบคุมตรวจสอบการทํางาน ของโปรแกรม ระหว่างที่นําไปใช้กับระบบงานจริง ซึ่งถ้ามีข้อผิดพลาดเกิดขึ้นหรือใช้โปรแกรมไปนานๆ แล้วเกิดต้องการจะเปลี่ยนแปลงให้ดูดีขึ้น ผู้เขียนโปรแกรมก็จะต้องปรับปรุงแก้ไขตามความต้องการ ของผู้ใช้งาน

2. การวัดประสิทธิภาพของขั้นตอนวิธ ี(Algorithm Efficiency) การเขียนโปรแกรมคอมพิวเตอร์ ไม่ว่าจะเป็นภาษาปาสคาล (PASCAL Language) ภาษาซ ี (C Language) ภาษาโคบอล(COBOL Language) หรือภาษาอื่นๆ โปรแกรมที่เขียนขึ้นมานั้น จะมี ประสิทธิภาพเพียงใด สามารถที่จะวัดได้หลายอย่าง เช่น วัดจากความเร็วที่ใช้ในหน่วยความจําหลัก หรือหน่วยความจําสํารองที่โปรแกรมนั้นๆ ต้องใชห้รือวัดจากความเร็วที่ใช้ในการทํางาน แต่ส่วนใหญ่แล้ว นิยมวัดประสิทธิภาพของขั้นตอนวิธีโดยพิจารณาเฉพาะความเร็วใน การทํางานของโปรแกรม โดยดูว่า โปรแกรมที่เขียนขึ้นมาใช้เวลาในการทํางานนานเท่าใด ถ้าใช้เวลาน้อยก็จะถือว่า เป็นขั้นตอนวิธีที่ดี แต่ในความเป็นจริงควรจะพิจารณาตัววัดอื่นๆ 3. ความหมายของโครงสร้างข้อมูล (Meaning of Data Structure) คําว่าโครงสร้างข้อมูล เกิดจากคําสองคําคือ คําว่า โครงวร้าง(Structure) และคําว่า ข้อมูล (Data) สําหรับข้อมูล หมายถึง ขอเท็จจริงหรือสิ่งที่ถือหรือยอมรับว่าเป็นข้อเท็จจริงสําหรับใช้เป็นหลักอนุมาน หาความจริงหรือการคํานวณ และโครงสร้าง หมายถึง ส่วนประกอบสําคัญๆ ซึ่งนํามาคุมเข้าด้วยกัน ให้เป็นรูปร่างเดียวกัน ดังนั้นโครงสร้างข้อมูล หมายถึง การนําเอาข้อมูลหรือส่วนย่อยๆ ที่ได้ทํา การรวบรวมมาให้อยู่ในรูปแบบหรือโครงสร้างที่เหมาะสม เพื่อให้เครื่องคอมพิวเตอร์ประมวลผล ข้อมูลได้ อย่างรวดเดียว และมีประสิทธิภาพ จะเห็นว่าสิ่งพื้นฐานในการประมวลผลข้อมูลด้วย คอมพิวเตอร์ก็คือ ข้อมูล ดังนั้นการศึกษาถึงความสมัพันธ์ของข้อมูลจึงมีความสําคัญอย่างมากในศาสตรค์อมพิวเตอร์ (Computer Science) 4. การแทนที่โครงสร้างข้อมูลในหน่วยความจําหลัก (Memory Representation of Data Structure) ข้อมูลที่จัดเก็บใว้ในหน่วยความจําสํารองไม่ว่าจะเป็นจานแม่เหล็กชนิดอ่อน (Floppy Disk) หรือ จากแม่เหล็กชนิดแข็ง(Harddisk) ก็ตาม เมื่อจะนํามาประมวลผลข้อมูลต้องดึงข้อมูลเหล่านั้น มาใว้ใน หน่วยความจําหลักเสมอ และเมื่อทําการประมวณผลเสร็จจะต้องมี การคืนเนือ้ที่ใน หน่วยความจําหลัก ให้กับระบบ เพื่อที่จะเตรียมใว้จัดเก็บข้อมูลอื่นๆ ต่อไป ซึ่งการแทนที่โครงสรา้งข้อมูล ในหน่วยความจํา หลักมี 2 วิธีดีงนี ้

Page 6: บทที่ 1 ความรู้เบื้องต้นเกี่ยวโครงสร้างข้อมูล Meaning of ... · บทที่ 1 ความรู้เบื้องต้นเกี่ยวโครงสร้างข้อมูลMeaning

  6  

4.1 การแทนที่โครงสร้างข้อมูลในหน่วยความจําที่กําหนดขนาดใว้ก่อน(Static Memory Representation) การแทนที่โครงสร้างข้อมูลในหน่วยความจําที่กําหนดขนาดใว้ก่อน เป็นการจองเนื้อที่ในหน่วยความจําทั้ง จํานวนและขนาดของหน่วยความจําใวแ้น่นอน ไม่สามารถที่จะเปลี่ยนแปลงขนาดได ้

4.2 การแทนที่โครงสร้างข้อมูลในหน่วยความจําที่ไม่กําหนดขนาดใว้ก่อน (Dynamic Memory Representation) การแทนที่โครงสร้างข้อมูลในหน่วยความจําทีไ่ม่กําหนดขนาดใว้ก่อนเป็นการจองเนื้อที่ที่แตกต่าง จากวิธีการแรกคือ ไม่ได้กําหนดขนาดของหน่วยความจําใว้ล่วงหน้าว่าควรจะมีจํานวนเท่าใด ซึ่งสามารถ ที่จะยืดหยุ่นได้ตามข้อมูลที่มีอยู่ถ้าข้อมูลมีน้อยก็ใช้เนื้อที่น้อยแต่ถ้าข้อมูลมีมากก็จะใช้เนื้อที่มาก ตามไปด้วย

5. ประเภทของโครงสร้างข้อมูล (Type of Data Structure) การพัฒนาโปรแกรมคอมพิวเตอร์เพื่อที่จะนําไปใช้ในระบบต่างๆ นอกจากพัฒนาจะต้องเรียนรู ้เกี่ยวกับขั้นตอนวิธี ภาษาคอมพิวเตอร์ และสามารถเลือกภาษาคอมพิวเตอร์ที่เหมาะสมกับระบบงานแล้ว แต่ถ้ามีระบบงานที่ซับซ้อนมากขึ้นและมีข้อมูลที่จะต้องนํามาใช้ในการประมวลผล จํานวนมาก สิ่งที่ผู้พัฒนาจะต้องคํานงึถึงก็คือ ประสิทธิภาพการทํางานของโปรแกรม การประมวลผลที่รวดเร็ว ใช้ทรัพยากรที่มีอยู่ให้เกิดประสิทธิภาพมากที่สุด และจะต้องเสียค่าใช้จ่ายน้อย อีกสิ่งหนึ่งที่ผู้พัฒนา โปรแกรมจะต้องทําการศึกษาควยคู่กันก็คือ เรื่องโครงสร้างข้อมูล ซึ่งก็ต้องเลือกใช้โครงสร้างข้อมูล ให้เหมาะสมกับระบบงานที่ทําจะช่วยให้ใช้ทรัพยากรได้อย่างมีประสิทธิภาพ โดยเฉพาะอย่างยิ่ง ทรัพยากร ที่เกี่ยวกับหน่วยความจําเพราะหน่วยความจําเป็น ทรัพยากรที่มีอยู่อย่างจํากัด จะต้องจัดสรร ให้ใช้งานได้อย่างคุ้มค่ามากที่สุด สําหรับโครงสร้างข้อมูลที่ใช้กันอยู่ในปัจจุบนั แบ่งออกเป็น 2 ประเภท คือ โครงสร้างข้อมูลทางกายภาพ (Physical data structure) ซึ่งเป็นโครงสร้างข้อมูลทั่วไปที่มีใน ภาษาคอมพิวเตอร์ และ โครงสร้างข้อมูลทางตรรกะ (Logical) เป็นโครงสร้างข้อมูลที่เกิดจากจินตนาการ ของผู้ใช้ เพื่อใช้แก้ปัญหาในโปรแกรมที่สร้างขึ้น สามารถแยกเป็น 2 ประเภท ดังต่อไปนี ้

5.1 โครงสร้างข้อมูลแบบเชิงเส้น(Linear Data Structure) โครงสร้างข้อมูลแบบเชิงเส้น เป็นโครงสร้างที่เก็บข้อมูลเรียงต่อกันไปเป็นเส้นตรง ได้แก ่ - โครงสร้างข้อมูลแบบแถวลําดับ - โครงสร้างข้อมูลแบบรายการโยง - โครงสร้างข้อมูลแบบกองซ้อน - โครงสร้างข้อมูลแบบแถวคอย

5.2 โครงสร้างข้อมูลแบบไม่เชิงเส้น (Non-Linear Data Structure) โครงสร้างข้อมูลแบบไม่เชิงเส้น เป็นโครงสร้างข้อมูลที่มีการจัดเก็บข้อมูล นั้นไม่ได้เรียงต่อกันไป เป็นเส้นตรง ทําให้ไม่สามารถนําข้อมูลเขา้และออกจากตําแหน่งใดๆ ก็ได้ โครงสร้างข้อมูลแบบไม่เชิงเส้น ได้แก่ - โครงสร้างข้อมูลแบบต้นไม ้ - โครงสร้างข้อมูลแบบกราฟ