วันพฤหัสบดีที่ 30 กรกฎาคม พ.ศ. 2552

DTS 05 -28/07/2009

สรุป Linked List
ลิงค์ลิสต์ (Linked List) เป็นวิธีการเก็บข้อมูลอย่างต่อเนื่องของอิลิเมนต์ต่าง ๆ โดยมีพอยเตอร์เป็นตัวเชื่อมต่อแต่ละอิลิเมนท์ เรียกว่าโนด (Node) ซึ่งในแต่ละโนดจะประกอบไปด้วย 2 ส่วน คือData จะเก็บข้อมูลของอิลิเมนท์ และส่วนที่สอง คือ Link Field จะทำหน้าที่เก็บตำแหน่งของโนดต่อไปในลิสต์

โครงสร้างข้อมูลแบบลิงค์ลิสต์
โครงสร้างข้อมูลแบบลิงค์ลิสต์จะแบ่งเป็น 2 ส่วน คือ
1. Head Structure จะประกอบไปด้วย 3 ส่วน
ได้แก่ จำนวนโหนดในลิสต์ (Count) พอยเตอร์ที่ชี้ไปยังโหนดที่เข้าถึง (Pos) และพอยเตอร์ที่ชี้ไปยังโหนดข้อมูลแรกของลิสต์ (Head)
2. Data Node Structure จะประกอบไปด้วยข้อมูล(Data) และพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไป

กระบวนงานและฟังก์ชั่นที่ใช้ดำเนินงานพื้นฐาน
1. กระบวนงาน Create List หน้าที่ สร้างลิสต์ว่าง ผลลัพธ์ ลิสต์ว่าง
2. กระบวนงาน Insert Node
3. กระบวนงาน Delete Node
4. กระบวนงาน Search list
5. กระบวนงาน Traverse
6. กระบวนงาน Retrieve Node
7. ฟังก์ชั่น EmptyList
9. ฟังก์ชั่น list count
10. กระบวนงาน destroy list

Linked List แบบซับซ้อน
1. Circular Linked List เป็นลิงค์ลิสต์ที่สมาชิกตัวสุดท้ายมีตัวชี้ (list) ชี้ไปที่สมาชิกตัวแรกของ
ลิงค์ลิสต์ จะมีการทำงานไปในทิศทางเดียวเท่านั้นคือเป็นแบบวงกลม
2. Double Linked List เป็นลิงค์ลิสต์ที่มีทิศทางการทำงานแบบ 2 ทิศทาง ในลิงค์ลิสต์แบบ 2
ทิศทาง ส่วนข้อมูลจะมีตัวชี้ไปที่ข้อมูลก่อนหน้า (backward pointer) และตัวชี้ข้อมูลถัดไป
(forward pointer)

วันพฤหัสบดีที่ 16 กรกฎาคม พ.ศ. 2552

DTS04-15/07/2009

สรุป เรื่องSet and String
โครงสร้างข้อมูลแบบเซ็ต
เป็นโครงสร้างข้อมูลที่ข้อมูลแต่ละตัวไม่มีความสัมพันธ์กัน ในภาษาซีจะไม่มีประเภทข้อมูลแบบเซ็ตนี้เหมือนกับในภาษาปาสคาล แต่สามารถใช้หลักการของการดำเนินงานแบบเซ็ตมาใช้ได้
ตัวดำเนินการของเซ็ต (Set operators)
ประกอบด้วย
- set intersection
- set union
- set difference เป็นต้น

สมมติว่า ต้องการจัดตารางเรียน 4 วิชา ได้แก่ Math, English,Physics และ Chemistry ให้กับผู้ลงทะเบียนเรียนวิธีการแก้ปัญหาเบื้องต้น
- จะต้องกำหนดเซ็ตของผู้เรียนที่ลงทะเบียนเรียนในแต่ละวิชา
- นำเซ็ตดังกล่าวที่ได้มาทำการ intersection กัน หากมีเซ็ตใดที่
ทำการ intersect กันแล้ว มีข้อมูลสมาชิกในเซ็ตที่ซ้ำกันอยู่ จะไม่สามารถจัดให้วิชาดังกล่าวอยู่ในวันเวลาเดียวกันได้ตัวอย่างดังกล่าว เป็นการนำแนวความคิดเรื่องการจัดการแบบเซ็ตมาประยุกต์ใช้งาน

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

การกำหนดสตริง
การกำหนดสตริงทำได้หลายแบบ คือ
1. กำหนดเป็นสตริงที่มีค่าคงตัว
(String Constants)
2. กำหนดโดยใช้ตัวแปรอะเรย์หรือพอยเตอร์




วันอาทิตย์ที่ 5 กรกฎาคม พ.ศ. 2552

DTS 03 - 30/06/2009

...สรุปเรื่อง Array and Record...

array หมายถึง ตัวแปรชุดที่ใช้เก็บตัวแปรชนิดเดียวกันไว้ด้วยกัน เช่น เก็บ ข้อมูล char ไว้กับ char เก็บ int ไว้กับ int ไม่สามารถเก็บข้อมูลต่างชนิดกันได้ เช่น char กับ int เรียก array อีกอย่างว่าหน่วยความจำแบ่งเป็นช่อง การกำหนดสมาชิกชิกของ array จะเขียนภายในเครื่องหมาย [ ]
pointer หมายถึง ตัวเก็บตำแหน่งที่อยู่ของหน่วยความจำ (Address) หรือเรียกว่า ตัวชี้ ตำแหน่งที่อยู่ สัญลักษณ์ของ pointer จะแทนด้วยเครื่องหมาย *ถ้าเก็บข้อมูลเลขจำนวนเต็ม (ชนิด int จะใช้พื้นที่หน่วยความจำเครื่อง 2 byte ) ฉะนั้นตำแหน่ง address จะห่างกันไปทีละ 2 ช่อง ตัวอย่างเช่น fff0 àfff2 ถ้าเป็นข้อมูลชนิด char จะใช้พื้นที่ memory 1 byte ก็จะห่างกัน 1 ช่อง เช่น fffo àfff1pointer จะใช้พื้นที่มากกว่า array เพราะต้องเพิ่มพื้นที่ส่วนหนึ่งสำหรับเก็บตำแหน่งที่อยู่ของข้อมูลตัวถัดไป
ตัวโครงสร้าง (Structure)
จะเป็นการรวบรวมตัวแปรชนิดต่าง ๆ ไว้ด้วยกันเป็นกลุ่มหรือ Entrities สามารถเก็บตัวแปรต่างชนิดกันไว้ด้วยกันได้ ซึ่งจะแตกต่างจาก array ที่จะเก็บได้เฉพาะตัวแปรที่ใช้ข้อมูลชนิดเดียวกันเท่านั้น ถ้าเปรียบเทียบ
array จะเหมือนกับข้อมูลที่เรียกว่า field
Struct จะเหมือนกับข้อมูลที่เรียกว่า record
รูปแบบการประกาศ Struct
struct ชื่อตัวโครงสร้าง
{
ประกาศตัวแปรที่เป็นสมาชิกของ struct ;
}ชื่อตัวแปรที่ใช้เข้าถึงสมาชิกของ struct;

การประกาศ struct จะประกาศก่อนเริ่มต้น function main() หรือประกาศภายใน Function main() ก็ได้