วันอังคารที่ 21 กรกฎาคม พ.ศ. 2552

DTS 04-15/07/2552


Set and String , Linked List

อาเรย์ของสตริงนั้นสามารถแบ่งได้เป็น 2 ประเภทคือแบบยาวเท่ากันและยาวไม่เท่ากันกรณียาวไม่เท่ากันนั้นทำได้ดังนี้
char *name[4]={“Thatchapol”, “John”, “Somchai”, “Ratchawee”};
แต่จะทำได้ก็ต่อเมื่อมีการกำหนดค่าเริ่มต้นเท่านั้น

กรณียาวเท่ากันนั้นเราจะทำการกำหนดอาเรย์ของสตริงเป็น 2 มิติ


Linked List

ลิงค์ลิสต์เป็นรูปแบบหนึ่งของโครงสร้างเหมือนกับพอยน์เตอร์คือมีการจัดการข้อมูลแบบไม่ตายตัว (Dynamic Structure) โครงสร้างของลิงค์ลิสต์จะประกอบด้วยโหนดหลาย ๆ โหนดภายใน 1 โหนดจะแบ่งออกเป็น 2 ส่วนคือส่วน data กับ link โดยการเชื่อมโยงไปยังโหนดต่อ ๆ นั้นจะใช้รูปแบบของพอยน์เตอร์เป็นตัวชี้ไปยังโหนดต่อ ๆ ไปประเภทของลิงค์ลิสต์นั้นมีหลายประเภทเช่น

1. ลิงค์ลิสต์แบบทิศทางเดียว
2. ลิงค์ลิสต์แบบวงกลม
3. ลิงค์ลิสต์แบบ 2 ทิศทาง
4. ลิงค์ลิสต์แบบหลายทิศทาง

โดยปกติครงสร้งของลิงค์ลิสต์มี 2 ส่วนใหญ่ ๆ คือ

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

ทฤษฏีการดำเนินการ

1. การสร้างลิสต์เนื่องจากลิงค์ลิสต์มีโครงสร้างที่ไม่ตายตัวดังนั้นจะต้องมีการจองพื้นที่บนหน่วยความจำให้กับพอยน์เตอร์ด้วยซึ่งก็คือการสร้างลิสต์ขึ้นมาหลักการทำงาน : จองพื้นที่หน่วยความจำให้กับลิงค์ลิสต์ก่อนดำเนินการ : ไม่มีการกำหนดค่าหลังการดำเนินการ : พอยน์เตอร์เริ่มต้นมีการจองพื้นที่บนหน่วยความจำการคืนค่า : เนื่องจากหน่วยความจำไม่มีที่ว่าง
2. การแทรกโหนดกำหนดค่าเริ่มต้น : pList = Head nodeกำหนดค่าเริ่มต้น : pPre = Node pointerกำหนดค่าเริ่มต้น : dataIn = ค่าข้อมูลในโหนดหลักการทำงาน : ทำการแทกรโหนดที่มีค่าข้อมูลลงในลิงค์ลิสต์ก่อนการทำงาน : กำหนดพอยน์เตอร์ของลิสต์ชี้ไปยังโหนดต้นลิสต์หลังการทำงาน : แทรกโหนดที่จัดเก็บข้อมูลเข้าไปยังลิสต์การคืนค่า : จริง คือแทรกโหนดเรียบร้อยการคืนค่า : เท็จ ถ้าหน่วยความจำเต็ม overflow

ไม่มีความคิดเห็น:

แสดงความคิดเห็น