โครงสร้างข้อมูลแบบต่างๆ

รูปภาพของ nungning123

โครงสร้างข้อมูลแบบคิว

คิวQueue   เป็นโครงสร้างข้อมูลแบบหนึ่งซึ่งมีลักษณะที่ว่า ข้อมูลที่นำเข้าไปเก็บก่อนจะถูกนำออกมาทำงานก่อน ส่วนข้อมูลที่เข้าไปเก็บทีหลังก็จะถูกนำออกมาใช้งานทีหลัง ขึ้นอยู่กับลำดับการเก็บข้อมูล จะเรียกลักษณะการทำงานแบบนี้ว่า เข้าก่อนออกก่อน หรือ First In First Out (FIFO)
 
การทำงานของคิว (Queue)
การใส่ สมาชิกตัวใหม่ลงในคิวเรียกว่า Enqueue ซึ่งมีรูปแบบคือenqueue (queue, newElement) หมายถึง การใส่ข้อมูลnewElement ลงไปที่ส่วนเรียร์
 
 
 
 
การนำสมาชิกออกจากคิว เรียกว่า Dequeue ซึ่งมีรูปแบบคือdequeue (queue, element)
หมายถึง การนำออกจากส่วนหน้า ของคิวและให้ ข้อมูลนั้นกับ element
 
 
 
โครงสร้างข้อมูลแบบกราฟ
เป็นโครงสร้างที่ไม่เป็นแบบรายการเชิงเส้น (Non-linear) ประกอบด้วยเซต V ซึ่งเราเรียกว่า จุดของกราฟ (vertices of G) และเซต E ซึ่งแยกออกมาจากเซต V  เราเรียกว่า ด้านของกราฟ
 
 
 
กราฟจะเรียกว่า กราฟอย่างง่าย (Simple Graph)  
  ถ้ามีคุณลักษณะต่อไปนี้
1. กราฟต้องไม่มีลูป (Loops)
2. โหนดแต่ละคู่จะต้องมีด้านไม่เกิน 1 ด้าน
 
 
 
ประเภทของกราฟแบ่งออกเป็น 2 ประเภท ได้แก่
      กราฟไม่มีทิศทาง (Undirected Graphs)คือ กราฟที่มีด้าน (Edges) ของกราฟจะไม่มีลูกศรแสดงทิศทางความสัมพันธ์ที่เกิดขึ้น (มองความสัมพันธ์ได้ทั้งสองด้าน)
 
 
 
กราฟมีทิศทาง (Directed Graphs)  คือ กราฟที่มีด้าน (Edges) ของกราฟมีลูกศรแสดงทิศทางความสัมพันธ์ที่เกิดขึ้น
 
โครงสร้างข้อมูลแบบทรี
 
ทรี (Tree)เป็นโครงสร้างข้อมูลที่ความสัมพันธ์ ระหว่าง โหนดจะมีความสัมพันธ์ลดหลั่นกันเป็นลำดับ เช่น (Hierarchical Relationship) ได้มีการนำรูปแบบทรีไปประยุกต์ใช้ในงาน ต่าง ๆ อย่างแพร่หลาย ส่วนมากจะใช้สำหรับแสดง ความสัมพันธ์ระหว่างข้อมูล เช่น แผนผังองค์ประกอบของหน่วยงานต่าง ๆ
 
 
 
 
การแทนที่ทรีในหน่วยความจำหลัก
วิธีการแทนที่ที่ง่ายที่สุดคือ ทำให้แต่ละโหนดมีจำนวนลิงคฟิลด์เท่ากันโดยอาจใช่วิธีการต่อไปนี้
1.โหนดแต่ละโหนดเก็บพอยเตอร์ชี้ไปยังโหนดลูก ทุกโหนด การแทนที่ทรีด้วยวิธีนี้จะให้จำนวนฟิลด์ในแต่ละ โหนดเท่ากัน
 
 
2.แทน ทรีด้วยไบนารีทรีเป็นวิธีแก้ปัญหาเพื่อลดการ สิ้นเปลืองเนื้อที่ในหน่วยความจำก็คือ กำหนดลิงค์ฟิลด์ใหม่จำนวนน้อยที่สุดเท่าที่จำเป็นเท่านั้น
 
 
 
โครงสร้างข้อมูลแบบสแตก(Stack)
สแตก(Stack)เป็นโครงสร้างข้อมูล ที่ ข้อมูลแบบลิเนียร์ลิสต์ ที่มีคุณสมบัติที่ว่าการเพิ่มหรือลบข้อมูลในสแตก จะกระทำที่ปลายข้างเดียวกัน ซึ่งเรียกว่า Topของสแตก (Top Of Stack)และ ลักษณะที่สำคัญของสแตก คือ ข้อมูลที่ใส่หลังสุดจะถูกนำออกมา จากสแตกเป็นลำดับแรกสุด เรียกคุณสมบัตินี้ว่า LIFO (Last In First Out)การดำเนินงานพื้นฐานของสแตกการทำงานต่าง ๆของสแตกจะกระทาที่ปลายข้างหนึ่งของสแตกเท่านั้นดั้งนั้นจะต้องมีตัวชี้ ตำแหน่งข้อมูลบนสุดของสแตกด้วยการทำงานของสแตกจะประกอบด้วยกระบวนการ 3กระบวนการที่สำคัญ คือ
 
 1. Push คือ การนำข้อมูลใส่ลงไปในสแตกเช่น สแตก s ต้องการใส่ข้อมูล iในสแตกจะได้ push(s,i)คือ ใส่ข้อมูล i ลงไปที่ท็อปของสแตก sในการเพิ่มข้อมูลลงในสแตก
 
 
 
2. Pop คือการนำข้อมูลออกจากส่วนบนสุดของสแตกเช่น ต้องการนำข้อมูลออกจากสแตกsไปไว้ที่ตัวแปร iจะได้ i = pop (s)การนำข้อมูลออกจากสแตกถ้าสแตกมีสมาชิกเพียง 1ตัวแล้วนำสมาชิกออกจากสแตก จะเกิดสภาวะสแตกว่าง(Stack Empty) 
 
 
 
 

 3. Stack Top เป็นการคัดลอกข้อมูลที่อยู่บนสุดของสแตกแต่ไม่ได้นำเอาข้อมูลนั้นออกจากสแตก
 
การแทนที่ข้อมูลของสแตกสามารถทำได้ 2 วิธี คือ
1. การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสต
2. การแทนที่ข้อมูลของสแตกแบบอะเรย์
การประยุกต์ใช้สแตก
 
     การประยุกต์ใช้ สแตก จะใช้ในงานด้าน ปฏิบัตการของเครื่องคอมพิวเตอร์ที่ขั้นตอนการทำงานต้องการเก็บข่าวสารอันดับ แรกสุดไว้ใช้ หลังสุด เช่น การทำงานของโปรแกรมแปลภาษานำไปใช้ในเรื่องของการโปรแกรมที่เรียกใช้โปรแกรม ย่อย การคำนวณนิพจน์ทาง คณิตศาสตร์ และรีเคอร์ชั่น (Recursion) 
 
โครงสร้างข้อมูลลิงค์ลิสต์ (Linked List)
จากการทำงานของโครงสร้างข้อมูลอาร์เรย์ (Array Structure) , โครงสร้างข้อมูลสแตก (Stack Structure) และโครงสร้างข้อมูลคิว (Queue Structure) มีลักษณะการจัดเก็บข้อมูลและการเข้าถึงข้อมูลในโครงสร้างแบบลำดับเป็นพื้นที่ต่อเนื่องกัน  การใช้งานของโครงสร้างถูกจำกัดไว้ไม่สามารถทำการปรับเปลี่ยนหรือแก้ไขขนาดของโครงสร้างได้ หรือหากต้องการปรับเปลี่ยนโครงสร้างใหม่ จะทำให้เสียเวลาในการประมวลผล ซึ่งในการใช้งานโปรแกรมพื้นที่หน่วยความจำ (Memory) เป็นสิ่งจำเป็นมาก การแก้ไขปัญหาดังกล่าว โดยใช้โครงสร้างข้อมูลแบบอื่น ๆ เป็นสิ่งจำเป็นที่ต้องพิจารณาและยากมาก
โครงสร้างข้อมูลลิงค์ลิสต์เป็นโครงสร้างข้อมูลแบบรายการเชิงเส้นที่มีลักษณะการดำเนินการเพิ่มข้อมูล (Insertion) หรือลบข้อมูล (Deletion) ออกจากโครงสร้าง สามารถกระทำที่ข้อมูลตรงตำแหน่งใด ๆ ในโครงสร้างก็ได้ ดังนั้น ลักษณะของโครงสร้างจึงมีความยืดหยุ่น (Flexible) กว่าและไม่มีขีดจำกัดด้านความจุของข้อมูลในโครงสร้าง  แต่ขั้นตอนการดำเนินงานกับโครงสร้างลิงค์ลิสต์นี้มีความยุ่งยากและซับซ้อนมากกว่า
 
การแทนโครงสร้างข้อมูลลิงค์ลิสต์
โครงสร้างข้อมูลลิงค์ลิสต์ (Linked List) ประกอบด้วยส่วนสำคัญ 2 ส่วนรวมเป็นโครงสร้างเรียกว่า โหนด (Node) คือ
1 .Data Link ทำหน้าที่เก็บข้อมูล
2. Link Fieldทำหน้าที่เก็บตำแหน่งที่อยู่ของโครงสร้างสมาชิกตัวถัดไป
 
ลักษณะของการเก็บข้อมูลและเชื่อมโยงโหนดอื่น ๆ ของลิงค์ลิสต์ เริ่มจากจุดเริ่มต้นของโครงสร้าง (Start Pointer) ซึ่งเป็นตัวแปรที่ทำหน้าที่เก็บตำแหน่งของข้อมูลที่อยู่โหนดแรกในโครงสร้างชี้ไปยังโครงสร้างข้อมูลชุดถัดไป และในโครงสร้างชุดดังกล่าวนี้ก็มี Pointer ชี้ไปยังโครงสร้างข้อมูลอื่น ๆ ต่อไปในลักษณะเดียว ส่วน Pointer ในโหนดสุดท้ายจะเก็บค่า NULL (ค่าว่าง) บางครั้งแทนตำแหน่งสุดท้ายในโครงสร้างด้วยสัญลักษณ์ทางไฟฟ้า เรียกว่า ground symbol)  เป็นการแสดงตำแหน่งสุดท้ายในโครงสร้าง
 
 
 
การแทนลิงค์ลิสต์ในพื้นที่หน่วยความจำแบบหนึ่ง
 
 
โครงสร้างข้อมูลลิงค์ลิสต์แบบ Circularly DLL
โครงสร้างข้อมูลลิงค์ลิสต์แบบ Circularly DLL คือ  ลักษณะของ Doubly linked list ที่มี Link ทางซ้าย  (LLINK) ของโหนดซ้ายมือสุดเก็บตำแหน่งที่อยู่ของโหนดที่อยู่ทางขวามือสุดและ Link ทางด้านขวา (RLINK) ของโหนดขวามือสุดก็จะเก็บตำแหน่งที่อยู่ของโหนดที่อยู่ทางซ้ายมือสุด
 
 
 
 
 
 
 
 
รูปภาพของ ssspoonsak

เนื่องจากมีข้อมูลบางส่วนหรือทั้งหมดได้ทำการคัดลอกมาแล้วไม่อ้างอิงแหล่งที่มาของข้อมูล

กรุณาอ้างอิงแหล่งที่มาของข้อมูลให้ชัดเจนด้วย ดูรูปแบบการทำเอกสารอ้างอิงได้ที่

http://www.thaigoodview.com/node/99177 

มิฉะนั้นทางเว็บ thaigoodview.com จำเป็นต้องลบข้อมูลทั้งหมดออก

อ่านรายละเอียด http://www.thaigoodview.com/node/159116

ขอขอบคุณ

ครูพูนศักดิ์ สักกทัตติยกุล

ผู้ดูแลเว็บไซต์ไทยกู๊ดวิว

 


ช่วยด้วยครับ
นักเรียนที่สร้างบล็อก กรุณาอย่าคัดลอกข้อมูลจากเว็บอื่นทั้งหมด
ควรนำมาจากหลายๆ เว็บ แล้ววิเคราะห์ สังเคราะห์ และเขียนขึ้นใหม่
หากคัดลอกทั้งหมด จะถูกดำเนินคดีตามกฎหมายจากเจ้าของลิขสิทธิ์
มีโทษทั้งจำคุกและปรับในอัตราสูง

ช่วยกันนะครับ 
ไทยกู๊ดวิวจะได้อยู่นานๆ ไม่ถูกปิดเสียก่อน
ขอขอบคุณในความร่วมมือครับ

มหาวิทยาลัยศรีปทุม ผู้ใหญ่ใจดี
 
 

 ช่วยด้วยครับ
นักเรียนที่สร้างบล็อก กรุณาอย่า
คัดลอกข้อมูลจากเว็บอื่นทั้งหมด
ควรนำมาจากหลายๆ เว็บ แล้ววิเคราะห์ สังเคราะห์ และเขียนขึ้นใหม่
หากคัดลอกทั้งหมด จะถูกดำเนินคดี
ตามกฎหมายจากเจ้าของลิขสิทธิ์
มีโทษทั้งจำคุกและปรับในอัตราสูง

ช่วยกันนะครับ 
ไทยกู๊ดวิวจะได้อยู่นานๆ 
ไม่ถูกปิดเสียก่อน

ขอขอบคุณในความร่วมมือครับ

อ่านรายละเอียด

ด่วน...... ขณะนี้
พระราชบัญญัติลิขสิทธิ์ (ฉบับที่ 2) พ.ศ. 2558 
มีผลบังคับใช้แล้ว 
ขอให้นักเรียนและคุณครูที่ใช้งาน
เว็บ thaigoodview ในการส่งการบ้าน
ระมัดระวังการละเมิดลิขสิทธิ์ด้วย
อ่านรายละเอียดที่นี่ครับ

 

สมาชิกที่ออนไลน์

ขณะนี้มี สมาชิก 0 คน และ ผู้เยี่ยมชม 174 คน กำลังออนไลน์