วันศุกร์ที่ 9 ตุลาคม พ.ศ. 2552

DTS11-15-09-2009

สรุป TREE

ทรีมีความสัมพันธ์ระหว่าง โหนดจะมีความลดหลั่นกันเป็นลำดับชั้น ได้มีการนำรูปแบบทรีไปประยุกต์ในการใช้งานต่างๆ หรือ การมีสายบังคับบัญชา

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

นิยามของทรี
1. นิยามทรีด้วยนิยามของกราฟ คือ กราฟที่ต่อเนื่องโดยไม่มีวงจรปิด ในโครงสร้าง การเขียนรูปแบบทรีเขียนได้ 4 แบบ
-1. แบบที่มีรากอยู่ด้านบน
-2. แบบที่มีรากอยู่ด้านล่าง
-3. แบบที่มีรากอยู่ด้านซ้าย
-4. แบบที่มีรากอยู่ด้านขวา

2. นิยามทรีด้วยรูปแบบรีเคอร์ซีฟหรือการเวียนเกิด คือ ทรีที่ประกอบไปด้วยสมาชิกที่เรียกว่าโหนด โดยที่ถ้าว่าง ไม่มีโหนดใดๆ จะเรียกว่า Null Tree ถ้ามีโหนดหนึ่งเป็นโหนดราหอีกโหนดจะเป็นทรีย่อย

............................................................................................

สรุป GRAPE

สำหรับเทคนิคการท่องไป ในกราฟมี 2 แบบดังนี้
1. การท่องแบบกว้าง (Breadth First Traversal) วิธีนี้ทำโดยเลือกโหนดที่เป็นจุดเริ่มต้น ต่อมาให้เยือนโหนดอื่นที่ใกล้กันกับโหนดเริ่มต้นทีละระดับจนกระทั่งเยือนหมดทุกโหนดในกราฟ

2. การท่องแบบลึก (Depth First Traversal) การทำงานคล้ายกับการท่องทีละระดับของทรี โดยกำหนดเริ่มต้นที่โหนดแรกและเยือนโหนดถัดไปตาม แนววิถีนั้นจนกระทั่งนำไปสู่ปลายวิถีนั้น จากนั้นย้อนกลับ (backtrack) ตามแนววิถีเดิมนั้น จนกระทั่ง สามารถดำเนินการต่อเนื่องเข้าสู่แนววิถีอื่น ๆ เพื่อเยือนโหนดอื่น ๆ ต่อไปจนครบทุกโหนด กราฟ มีน้ำหนัก หมายถึง กราฟที่ทุกเอดจ์ มีค่าน้ำหนักกำกับ ซึ่งค่าน้ำหนักอาจสื่อถึงระยะทาง เวลา ค่าใช้จ่าย เป็นต้น

นิยมนำไปใช้แก้ปัญหาหลัก ๆ 2 ปัญหา คือ
1. การสร้างต้นไม้ทอดข้ามน้อยที่สุด(Minimum Spanning Trees :MST)
-1. เรียงลำดับเอดจ์ ตามน้ำหนัก
-2. สร้างป่าที่ประกอบด้วยต้นไม้ว่างที่มีแต่โหนด และไม่มีเส้นเชื่อม
-3. เลือกเอดจ์ที่มีน้ำหนักน้อยที่สุดและยังไม่เคยถูกเลือกเลย ถ้ามีน้ำหนักซ้ำกันหลายค่าให้สุ่มมา 1 เส้น
-4. พิจารณาเอดจ์ที่จะเลือก ถ้านำมาประกอบในต้นไม้ทอดข้ามน้อยที่สุดแล้วเกิด วงรอบ ให้ตัดทิ้งนอกนั้นให้นำมาประกอบเป็นเอดจ์ในต้นไม้ทอดข้ามน้อยที่สุด
-5. ตรวจสอบเอดจ์ที่ต้องอ่านในกราฟ ถ้ายังอ่านไม่หมดให้ไปทำข้อ 3
-6. เลือกเอดจ์ที่เหลือและมีน้ำหนักน้อยที่สุดมา
-7. เลือกเอดจ์ที่เหลือและมีน้ำหนักน้อยที่สุด ตามตัวอย่าง คือ edges (5,7) จากนั้นให้ตัดทิ้งไม่นำมาเชื่อมต่อต้นไม้ในป่า เนื่องจากทำให้เกิดวงรอบ
-8. เลือกเอดจ์ที่เหลือและมีน้ำหนักน้อยที่สุด ตามตัวอย่าง คือ edges (1,4) จากนั้นให้ตัดทิ้งไม่นำมาเชื่อมต่อต้นไม้ในป่า เนื่องจากทำให้เกิดวงรอบ
-9. เลือกเอดจ์ที่เหลือและมีน้ำหนักน้อยที่สุดมา ตามตัวอย่าง คือ edges(3,5) นำมาเชื่อมต่อต้นไม่ในป่า เนื่องจากเป็นเอดจ์สุดท้าย

2. การหาเส้นทางที่สั้นที่สุด(Shortest path)
2.1 เริ่มต้นให้เซต S มีเพียงโหนดเดียว คือโหนดที่เป็นจุดเริ่มต้น
2.2 คำนวณหาระยะทางจาก โหนดที่เป็นจุดเริ่มต้น ไปยังโหนดทุกโหนดในกราฟ โดยยอมให้ใช้โหนดในเซต S เป็นทางผ่านได้ ถ้ามีมากกว่า 1 ทาง ให้เลือกทางที่สั้นที่สุด นำไปใส่ใน D ของแต่ละโหนด
2.3 เลือกโหนด W ที่ห่างจากโหนดเริ่มต้นน้อยที่สุดไปไว้ใน S การคำนวณหาระยะทางสั้นที่สุด จาก โหนดต้นทางคือโหนด 1 ไปยังโหนดใด ๆ

............................................................................................

สรุปเรื่อง sorting

วิธีการเรียงลำดับ
1. การเรียงลำดับแบบภายใน การเรียงลำดับทั้งหมดต้องอยู่ในหน่วยความจำหลัก
2. การเรียงลำดับแบบภายนอก เป็นการเรียงลำดับขอ้มูลจะเก็บไว้ในหน่วยความจำสำรอง

การเรียงลำดับแบบเลือก ทำการเลือกข้อมูลมาเก็บไว้ในตำแหน่ง ข้อมูลนั้นควรจะอยู่ที่ละตัว โดยการค้นหาข้อมูลั้นจะเรียงจากน้อยไปหามาก

การเรียงลำดับแบบฟอง เป็นการเปรียบเทียบข้อมูลที่ในตำแหน่งอยู่ติดกัน ถ้าข้อมูลทั้งสองไม่อยู่ในตำแหน่งที่ถูกต้องให้สลับตำแหน่ง ข้อมูลมีการเรียงลำดับจากน้อยไปมาก

การเรียงลำดับแบบเร็ว ใช้เวลาน้อย เหมาะกับข้อมูลที่มีจำนวนมากต้องการความรวดเร็วในการทำงาน และกำหนดค่าหนึ่งเป็นค่าหลัก แล้วหาตำแหน่งที่ถูกต้องให้กับค่าหลักนี้ โดยแบ่งข้อมูลออกเป็นสองส่วน ส่วนแรกอยู่ตอนหน้าของข้อมูล ทั้งหมดจะมีค่าน้อยกว่าค่าหลักที่เป็นตัวแบ่ง

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

วิธีการเรียงลำดับจะเริ่มจากการเปรียบเทียบในตำแหน่งที่1และ2 หรือข้อมูลในตำแหน่งสุดท้ายและรองสุดท้าย และต้องจัดข้อมูลที่มีค่าน้อยในตำแหน่งก่อนข้อมูลที่มีค่ามาก ถ้าเรียงจากมากไปน้อยจะจัดให้ข้อมูลที่มีค่ามากอยูในตำแหน่งก่อน

การเรียงลำดับแบบฐาน เป็นการพิจารณาข้อมูลทีละหลัก โดยเริ่มจากข้อมูลที่มีค่าน้อยที่สุดก่อน นั้นคือข้อมูลที่เป็นจำนวนเต็มในหลักหน่วยก่อน และจัดเรียงเข้ามาทีละตัวแล้วนำไปเก็บไว้เป็นกลุ่ม ในรอบต่อไปนำข้อมูลทั้งหมดมาจัดเรียงในหลักหน่วยก่อนแล้วจึงไปทำหลักสิบตอไป

............................................................................................

สรุป searching

การค้นหาข้อมูล คือ การใช้วิธีการค้นหาโครงสร้างข้อมูล เพื่อดุซ่าข้อมูลตัวที่ต้องการถูฏเก็บอยู่ในโครงสร้างแล้วหรือยัง

การค้นหา สามารถแบ่งได้ 2 ประเภท ตามแหล่งที่จัดเก็บข้อมูลเช่นเดียวกับกสนเรียงลำดับ
การค้นหาข้อมูลภายนอก(INTERNAL SEARCHING)
การค้นหาข้อมูลภายใน(EXTERNAL SEARCHING)

1. การค้นหาเชิงเส้นหรือการค้นหาแบบลำดับ(LINEAR)เป็นวิธีที่ใช้กับข้อมูลที่ไม่เรียงลำดับ
2. การค้นหาแบบเซนทินัล (SENTINEL) เป็นวิธิที่การค้นหาแบบเดียวกับการค้นหาแบบเชิงเส้นแต่ประสิทธิภาพดีกว่าตรงที่เปรียบเทียบน้อยครั้งกว่า พัฒนามาจากอัลกอริทึ่มแบบเชิงเส้น
3. การค้นหาแบบไบนารี(BINARY SEARCH) ใช้กับข้อมูลที่จัดเรียงแล้วเท่านั้น หลักการต้องมีการแบ่งข้อมูลออกเป็น 2 ส่วน แล้วนำค่ากลางข้อมูลมาเปรียบเทียบกับคีย์ที่ต้องการหา

DTS10-15-09-2009

เรื่องตารางแฮชคือการเข้าถึงข้อมูลโดยตรง กำหนดให้ k เป็นคีย์ถูกจัดเก็บอยู่ใน ช่อง k ด้วยการทำแฮช ด้วยพื้นฐานการจัดเก็บในช่องที่h(k) โดยฟังก์ชั่น h เพื่อคำนวณหาช่องของคีย์โดยการจับคู่กับดอกภพสัมพันธ์ U ในตาราง T

การชนกับของข้อมูลการแทรกในตาราง ที่จัดเก็บนั้นมีโอกาสที่คีย์ถูกสร้างจากฟังก์ชั้น อย่างไรก็ตามการเกิดการชนกันยังคงมีอย่างน้อย 1 ครั้ง

วิธีการสร้างฟังก์ชั่นแฮช
1. วิธีการหาร คือ การจับคู่คีย์ K ในช่องของ m โดยนำเศษที่เหลือของ k จากการหารด้วย m ด้วยฟังก์ชั่นคือ h(k) = mod m.

2. วิธีการคูณ ปรกอบด้วย 2 ขั้นตอน
ขั้นที่ 1
คูณ k ด้วยค่าคงที่ , 0< A < 1 ด้วยการขยาย เศษส่วนของ kA
ขั้นที่ 2 : การคูณ kA ด้วย mh(k) = m (kA mod 1)๛เมื่อ "kA mod 1" หมายถึง เศษส่วนของ kA, นั่นคือ, kA - k A๛.

ประโยชน์ของวิธีนี้คือ ค่าของm จะไม่วิกฤติ และสามารถดำเนินการในครื่องคอมพิวเตอร์ส่วนมากได้3. วิธีทั่วไป คือ Open Addressing ฟังก์ชั่นแฮช คือ h:V{0,1,.....m-1}-->{0,1,...,m-1}

เทคนิคลำดับของการตรวจสอบ
1. การตรวจสอบเชิงเสน
2. การตรวจสอบด้วยสมการกำลังสอง
3. การสร้างฟังก์ชั่นแฮชแบบสองท่า

DTS09-15-09-2009

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


วิธีการเรียงลำดับสามารถแบ่งออกเป็น2 ประเภท คือ
1. การเรียงลำดับแบบภายใน
เป็นการเรียงลำดับที่ข้อมูลทั้งหมดต้องอยู่ในหน่วยความจำหลัก
2. การเรียงลำดับแบบภายนอก
เป็นการเรียงลำดับข้อมูลที่เก็บอยู่ในหน่วยความจำสำรอง


การเรียงลำดับแบบเลือก (selection sort)
ทำการเลือกข้อมูลมาเก็บในตำแหน่งที่ ข้อมูลนั้นควรจะอยู่ทีละตัว โดยทำการค้นหาข้อมูลนั้นในแต่ละรอบแบบเรียงลำดับถ้าเป็นการเรียงลำดับจากน้อยไปมาก


การเรียงลำดับแบบฟอง (Bubble Sort)
เป็นวิธีการเรียงลำดับที่มีการเปรียบเทียบข้อมูลในตำแหน่งที่อยู่ติดกัน โดยแบ่งออกเป็น2หัวข้อ คือ
1. ถ้าข้อมูลทั้งสองไม่อยู่ในลำดับที่ถูกต้องให้สลับตำแหน่งที่อยู่กัน
2. ถ้าเป็นการเรียงลำดับจากน้อยไปมากให้นำข้อมูลตัวที่มีค่าน้อยกว่าอยู่ในตำแหน่งก่อนข้อมูลที่มีค่ามาก ถ้าเป็นการเรียงลำดับจากมากไปน้อยให้นำข้อมูล ตัวที่มีค่ามากกว่าอยู่ในตำแหน่งก่อนข้อมูลที่มีค่าน้อย


การเรียงลำดับแบบเร็ว (quick sort)
เป็นวิธีการเรียงลำดับที่ใช้เวลาน้อยเหมาะสำหรับข้อมูลที่มีจำนวนมากที่ต้องการความรวดเร็วในการทำงาน วิธีนี้จะเลือกข้อมูลจากกลุ่มข้อมูลขึ้นมาหนึ่งค่าเป็นค่าหลัก แล้วหาตำแหน่งที่ถูกต้องให้กับค่าหลักนี้


การเรียงลำดับแบบแทรก (insertion sort)
เป็นวิธีการเรียงลำดับที่ทำการเพิ่มสมาชิกใหม่เข้าไปในเซต ที่มีสมาชิกทุกตัวเรียงลำดับอยู่แล้ว และทำให้เซตใหม่ที่ได้นี้มีสมาชิกทุกตัวเรียงลำดับด้วย


การเรียงลำดับแบบฐาน (radix sort)
เป็นการเรียงลำดับโดยการพิจารณาข้อมูลทีละ
หลัก โดยมีวิธีการดังนี้
1. เริ่มพิจารณาจากหลักที่มีค่าน้อยที่สุดก่อน นั่นคือถ้าข้อมูลเป็นเลขจำนวนเต็มจะพิจารณาหลักหน่วยก่อน
2. การจัดเรียงจะนำข้อมูลเข้ามาทีละตัว แล้วนำไปเก็บไว้ที่ซึ่งจัดไว้สำหรับค่านั้น เป็นกลุ่ม ๆตามลำดับการเข้ามา
3. ในแต่ละรอบเมื่อจัดกลุ่มเรียบร้อยแล้ว ให้รวบรวมข้อมูลจากทุกกลุ่มเข้าด้วยกัน โดยเริ่มเรียงจากกลุ่มที่มีค่าน้อยที่สุดก่อนแล้วเรียงไปเรื่อย ๆ จนหมดทุกกลุ่ม
4. ในรอบต่อไปนำข้อมูลทั้งหมดที่ได้จัดเรียงในหลักหน่วยเรียบร้อยแล้วมาพิจารณาจัดเรียงในหลักสิบต่อไป ทำเช่นนี้ไปเรื่อย ๆ จนกระทั่งครบทุกหลักจะได้ข้อมูลที่เรียงลำดับจากน้อยไปมากตามต้องการ

DTS08-09-09-2009

กราฟ (Graph) เป็นโครงสร้างข้อมูลแบบไม่ใช่เชิงเส้น อีกชนิดหนึ่ง กราฟเป็นโครงสร้างข้อมูลที่มีการนำไปใช้ในงานที่เกี่ยวข้องกับการแก้ปัญหาที่ค่อนข้างซับซ้อนเช่น การวางข่าย งานคอมพิวเตอร์ การวิเคราะห์เส้นทางวิกฤติ และปัญหาเส้นทางที่สั้นที่สุด เป็นต้น

นิยามของกราฟ
กราฟ เป็นโครงสร้างข้อมูลแบบไม่ใช่เชิงเส้นที่ประกอบ ด้วยกลุ่มของสิ่งสองสิ่งคือ
(1) โหนด (Nodes) หรือ เวอร์เทกซ์
(Vertexes)
(2) เส้นเชื่อมระหว่างโหนด เรียก เอ็จ (Edges)
กราฟที่มีเอ็จเชื่อมระหว่างโหนดสองโหนดถ้าเอ็จไม่มีลำดับ ความสัมพันธ์จะเรียกกราฟนั้นว่ากราฟแบบไม่มีทิศทาง (Undirected Graphs)และถ้ากราฟนั้นมีเอ็จที่มีลำดับความสัมพันธ์หรือมีทิศทางกำกับด้วยเรียกกราฟนั้นว่า กราฟแบบมีทิศทาง(Directed Graphs)บางครั้งเรียกว่า ไดกราฟ (Digraph)ถ้าต้องการอ้างถึงเอ็จแต่ละเส้นสามารถเขียนชื่อเอ็จกำกับไว้ก็ได้


การท่องไปในกราฟ
การท่องไปในกราฟ (graph traversal) คือกระบวนการเข้าไปเยือนโหนดในกราฟ โดยมีหลักในการทำงานคือ แต่ละโหนดจะถูกเยือนเพียงครั้งเดียว

การท่องไปในกราฟมี 2 แบบดังนี้
1. การท่องแบบกว้าง (Breadth First Traversal)
วิธีนี้ทำโดยเลือกโหนดที่เป็นจุดเริ่มต้น ต่อมาให้เยือนโหนดอื่นที่ใกล้กันกับโหนดเริ่มต้นทีละระดับจนกระทั่งเยือนหมดทุกโหนดในกราฟ

2. การท่องแบบลึก (Depth First Traversal)
การทำงานคล้ายกับการท่องทีละระดับของทรี โดยกำหนดเริ่มต้นที่โหนดแรกและเยือนโหนดถัดไปตามแนววิถีนั้นจนกระทั่งนำไปสู่ปลายวิถีนั้น จากนั้นย้อนกลับ (backtrack) ตามแนววิถีเดิมนั้น จนกระทั่งสามารถดำเนินการต่อเนื่องเข้าสู่แนววิถีอื่น ๆ เพื่อเยือนโหนดอื่น ๆ ต่อไปจนครบทุกโหนด

DTS07-25-08-2009

ทรี (Tree) เป็นโครงสร้างข้อมูลที่ความสัมพันธ์ระหว่าง โหนดจะมีความสัมพันธ์ลดหลั่นกันเป็นลำดับชั้น(Hierarchical Relationship)ได้มีการนำรูปแบบทรีไปประยุกต์ใช้ในงานต่าง ๆ อย่างแพร่หลาย ส่วนมากจะใช้สำหรับแสดงความสัมพันธ์ระหว่างข้อมูล

ส่วนของแต่ละโหนดนั้น ก็จะมีความสัมพันธ์กับโหนดในระดับที่ต่ำลงมา โหนดที่อยู่สูงที่สุด เรียกโหนดดังกล่าวว่า โหนดแม่ (Parent orMother Node)โหนดที่อยู่ต่ำกว่าโหนดแม่อยู่หนึ่งระดับเรียกว่า โหนดลูก (Child or Son Node)โหนดที่อยู่ในระดับต่ำสุดและไม่มีโหนดแม่เรียกว่า โหนดราก (Root Node) โหนดที่มีโหนดแม่เป็นโหนดเดียวกัน
เรียกว่า โหนดพี่น้อง (Siblings)โหนดที่ไม่มีโหนดลูก เรียกว่าโหนดใบ (Leave Node)เส้นเชื่อมแสดงความสัมพันธ์ระหว่างโหนดสองโหนดเรียกว่า กิ่ง (Branch)


นิยามของทรี
1. นิยามทรีด้วยนิยามของกราฟ คือ กราฟที่ต่อเนื่องโดยไม่มีวงจรปิดในโครงสร้าง โหนดสองโหนด
ในทรีต้องมีทางติดต่อกันทางเดียวเท่านั้น และทรีที่มี N โหนด ต้องมีกิ่งทั้งหมด N-1 เส้น

การเขียนรูปแบบทรี อาจเขียนได้ 4แบบ คือ
-แบบที่มีรากอยู่ด้านบน
-แบบที่มีรากอยู่ด้านล่าง
-แบบที่มีรากอยู่ด้านซ้าย
-แบบที่มีรากอยู่ด้านขวา

2. นิยามทรีด้วยรูปแบบรีเคอร์ซีฟ คือ ทรีประกอบด้วยสมาชิกที่เรียกว่าโหนด โดยที่ ถ้าว่าง ไม่มีโหนดใด ๆ เรียกว่านัลทรี (Null Tree) และถ้ามีโหนดหนึ่งเป็นโหนดราก ส่วนที่เหลือจะแบ่งเป็นทรีย่อย (Sub Tree)

DTS06-04-08-2009

สแตก (Stack) เป็นโครงสร้างข้อมูลที่ข้อมูลแบบลิเนียร์ลิสต์ ที่มีคุณสมบัติที่ว่า การเพิ่มหรือลบข้อมูลในสแตก จะกระทำที่ ปลายข้างเดียวกัน ซึ่งเรียกว่า Top ของสแตก (TopOf Stack) และ ลักษณะที่สำคัญของสแตกคือ ข้อมูลที่ใส่หลังสุดจะถูกนำออกมา จากสแตกเป็นลำดับแรกสุด หรือที่เรียกว่า เข้าก่อน ออกหลัง เรียกคุณสมบัตินี้ว่าLIFO (Last In First Out)

กระบวนการทำงานของ สแตก นั้น จะมีอยู่ 3 กระบวนการ คือ

1. Push คือ การนำข้อมูลใส่ลงไปในสแตก

2. Pop คือ การนำข้อมูลออกจากส่วนบนสุดของสแตก

3. Stack Top เป็นการคัดลอกข้อมูลที่อยู่บนสุดของสแตก แต่ไม่ได้นำเอาข้อมูลนั้นออกจากสแตก


การดำเนินการเกี่ยวกับสแตก ได้แก่


1. Create Stack -จะเป็นการ จัดสรรหน่วยความจำให้แก่ Head Nodeและส่งค่าตำแหน่งที่ชี้ไปยัง Head ของสแตกกลับมา

2. Push Stack -จะเป็นการเพิ่มข้อมูลลงไปในสแตก

3. Pop Stack -จะเป็นการนำข้อมูลบนสุดออกจากสแตก


4. Stack Top -จะเป็นการคัดลอกข้อมูลที่อยู่บนสุดของสแตก โดยไม่มีการลบข้อมูลออกจากสแตก


5.Empty Stack -จะเป็นการตรวจสอบการว่างของสแตก เพื่อไม่ให้เกิดความผิดพลาดในการนำข้อมูลออกจากสแตกที่เรียกว่า Stack Underflow


6. Full Stack -จะเป็นการตรวจสอบว่าสแตกเต็มหรือไม่ เพื่อไม่ให้เกิดความผิดพลาดในการนำข้อมูลเข้าสแตกที่เรียกว่า Stack Overflow


7. Stack Count -จะเป็นการนับจำนวนสมาชิกในสแตก


8. Destroy Stack -จะเป็นการลบข้อมูลทั้งหมดที่อยู่ในสแตก

วันจันทร์ที่ 3 สิงหาคม พ.ศ. 2552

DTS05-28-07-2009

สรุปบทเรียน

ลิงค์ลิสต์เป็นการจัดเก็บชุดข้อมูลเชื่อมโยงต่อเนื่องกันไปตามลำดับ ซึ่งอาจอยู่ในลักษณะแบบเชิงเส้นตรง (linear) หรือ ไม่เป็นเส้นตรง (nonlinear) ก็ได้ ซึ่งในลิสต์จะประกอบไปด้วยข้อมูลที่เรียกว่าโหนด (node) ในหนึ่งโหนดจะประกอบด้วยส่วนของข้อมูลที่ต้องการจัดเก็บ เรียกว่าส่วน Info และส่วนที่เป็นพอยน์เตอร์ที่ชี้ไปยังโหนดถัดไป (Link) หรือชี้ไปยังโหนดอื่นๆที่อยู่ในลิสต์ หากไม่มีโหนดที่อยู่ถัดไป ส่วนที่เป็นพอยน์เตอร์หรือ Link จะเก็บค่า NULL

Linked list ประกอบไปด้วย node ซึ่งมีข้อมูลของแต่ละ node อยู่ประกอบไปด้วย ข้อมูลและตัวที่บ่งชี้ถึงโหนดต่อไป หากเป็นโหนดสุดท้ายจะมีค่าเป็น null

DTS04-21-07-2009

สรุปบทเรียน

โครงสร้างข้อมูลแบบเซต (set) เป็นโครงสร้างที่ข้อมูลแต่ละตัวไม่มีความสัมพันธ์กันเลย จะมีตัวดำเนินงานของเซ็ต คือ
1.โครงสร้างแบบเชิงเส้น (linear) เป็นโครงสร้างที่ข้อมูลมีความสัมพันธ์แบบหนึ่งต่อหนึ่ง (one-to-one relationship) นั่นคือเราสามารถระบุถึงข้อมูลตัวถัดไปของข้อมูลได้
2.โครงสร้างแบบต้นไม้หรือแบบลำดับขั้น (tree or hierarchical) เป็นโครงสร้างที่ข้อมูลมีความสัมพันธ์กันแบบหนึ่งต่อหลาย (one-to-many relationship) นั่นคือ ข้อมูลตัวหนึ่งสามารถมีความสัมพันธ์กับข้อมูลในลำดับรองลงไปได้หลายตัว
3.โครงสร้างแบบกราฟหรือเครือข่าย (graph or network) เป็นโครงสร้างที่ข้อมูลมีความสัมพันธ์กันแบบหลายต่อหลาย (many-to-many relationship) นั่นคือ ข้อมูลตัวหนึ่ง ๆ อาจจะมีความสัมพันธ์กับข้อมูลตัวอื่น ๆ กี่ตัวก็ได้

โครงสร้างข้อมูลแบบสตริง
สติงเป็นโครงสร้างข้อมูลที่เป็นการรวบรวมโครสร้างข้อมูล Character ซึ่งเป็นตัวอักษรและสัญลักษณ์ ต่างๆเป็นข้อมูลที่ใช้กันอย่างมาก

วันจันทร์ที่ 13 กรกฎาคม พ.ศ. 2552

DTS03-30/06/2009

สรุปบทเรียนสรุปบทเรียน

ได้เรียนรู้เกี่ยวกับ array และ record ได้รู้ความหมายและความแตกต่างกัน ซึ่ง array หมายถึงเนื้อที่หน่วยความจำที่เรียงต่อกันใช้เก็บข้อมูลชนิดเดียวกัน เนื้อที่หน่วยความจำนี้มีชื่อเดียวกัน เช่น การรับค่า int ก็จะสามารถรับได้เเต่เพียงค่า int เท่านั้น ไม่สามารถรับค่าอื่นได้ ข้อเสียของ array คือไม่สามารถขยายพื้นที่เพิ่มข้อมูลได้อีก ส่วน Record เป็นชนิดข้อมุลที่สามารถเก็บชนิดข้อมูล ชนิดอื่นๆ ไว้ภายในได้ โดยเราเรียกข้อมุลแต่ละตัวที่อยู่ใน Record ว่า Field Record เป็นชนิดข้อมุลที่สามารถเก็บชนิดข้อมูล ชนิดอื่นๆ ไว้ภายในได้ เช่น การรับข้อมูล int สามารถเพิ่มข้อมูลอื่นๆได้อีก เช่น float char เป็นต้น และยังสามารถขยายพื้นที่การเพิ่มข้อมูลได้

วันอาทิตย์ที่ 28 มิถุนายน พ.ศ. 2552

สิ่งที่ฉันปรารถนา

VDO แนะนำ


DTS02-23/06/2009

สรุปบทเรียน

ได้เรียนเกี่ยวกับ ความหมายของโครงสร้างข้อมูล ว่าเป็นยังไง และจะแบ่งออกเป็น2ประเภท คือ

1.โครงสร้างข้อมูลทางกายภาพ ซึ่งเป็นโครงสร้างทั่วไปที่ไม่ได้เป็นภาษาคอมพิวเตอร์ จะแบ่งออกเป็น 2ประเถท คือ
1.1 ข้อมูลเบื้องต้น
1.2 ข้อมูลโครงสร้าง

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

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


การบ้าน
#include <stdio.h>
#include <string.h>
void main()
{
struct data {
char name[50];
int Harddisk ;
int Display_Card ;
int Monitor;
char Sound_Card[30] ;
int CPU_Speed ;
float RAM;
char price[30];
};
struct data Computer;
strcpy(Computer.name,"Super Computer");
Computer.Display_Card=2 ;
Computer.Monitor=30 ;
strcpy (Computer.Sound_Card,"Dolby Digital ") ;
Computer.Harddisk= 120 ;
Computer.CPU_Speed=500 ;
Computer.RAM=1.50 ;
strcpy(Computer.price,"1,000,000,000") ;


printf(" *********Super Computer*********\n\n") ;
printf(" Name:%s\n",Computer.name);
printf(" harddisk : %d GB\n",Computer.Harddisk) ;
printf(" Display_Card : %d GB\n",Computer.Display_Card) ;
printf(" Monitor : %d inch\n",Computer.Monitor);
printf(" Dolby_Digital : %s \n",Computer.Sound_Card) ;
printf(" speed:%d Gflops-10 Tflops\n",Computer.CPU_Speed);
printf(" ram: %.2f TB\n",Computer.RAM);
printf(" price: %s Bath\n",Computer.price);

}

วันจันทร์ที่ 22 มิถุนายน พ.ศ. 2552

ประวัติ




นาย สุรเชษฐ์ สุจริตภักดี ชื่อเล่น โอ รหัสนักศึกษา 50172792024

Mr.Surachet suajritpukdee

หลักสูตร การบริหารธุรกิจ (คอมพิวเตอร์ธุรกิจ) คณะ วิทยาการจัดการ

มหาวิทยาลัยราชภัฏสวนดุสิต

E-Mail : u50172792024