วันเสาร์ที่ 25 กรกฎาคม พ.ศ. 2552

DTS: 06-22/07/2552

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

DTS: 06-22/07/2552

เรื่อง สแตก (Stack)

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

การดำเนินงานพื้นฐานของสแตก
การทำงานต่าง ๆ ของสแตกจะกระทำที่ปลายข้างหนึ่งของ สแตกเท่านั้น ดังนั้นจะต้องมีตัวชี้ ตำแหน่งข้อมูลบนสุดของ สแตกด้วย การทำงานของสแตกจะประกอบด้วยกระบวนการ 3 กระบวนการที่สำคัญ คือ
1.Push คือ การนำข้อมูลใส่ลงไปในสแตก เช่น สแตก s ต้องการใส่ข้อมูล i ในสแตก จะได้ push (s,i) คือ ใส่ข้อมูล i ลงไปที่ทอปของสแตก s

ในการเพิ่มข้อมูลลงในสแตก จะต้องทำการ ตรวจสอบว่า สแตก เต็มหรือไม่ ถ้าไม่เต็มก็ สามารถเพิ่มข้อมูลลงไปใน สแตกได้ แล้วปรับ ตัวชี้ตำแหน่งให้ไปชี้ที่ตำแหน่งข้อมูลใหม่ ถ้าส แตกเต็ม (Stack Overflow) ก็จะไม่สามารถ เพิ่มข้อมูล เข้าไปในสแตกได้อีก
ตัวอย่าง












2. Pop คือ การนำข้อมูลออกจากส่วนบนสุด ของสแตก เช่น ต้องการนำข้อมูลออกจากสแตก s ไปไว้ที่ตัวแปร i จะได้ i = pop (s) การนำข้อมูลออกจากสแตก ถ้าสแตก มีสมาชิกเพียง 1ตัว แล้วนำสมาชิกออกจากสแตก จะเกิด สภาวะสแตก ว่าง (Stack Empty) คือ ไม่มีสมาชิกอยู่ใน สแตกเลย ตัวอย่าง













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










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


การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสต์จะประกอบไปด้วย2 ส่วน คือ
1. Head Node จะประกอบไปด้วย 2ส่วนคือ top pointer และจำนวนสมาชิกในสแตก
2. Data Node จะประกอบไปด้วยข้อมูล (Data) และ พอยเตอร์ ที่ชี้ไปยังข้อมูล

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

DTS: 05-15/07/2552

เรื่อง Linked List

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

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


การเขียนโปรแกรมการคำนวณภาษี โดยรับค่าเงินเดือน 1 จำนวน แลัวหักภาษี
7% จาก เงินเดือนพนักงาน แบบ iostream.h และ stdio.h


" iostream.h "


















" stdio.h "

















DTS: 04-07/07/2552

แบบฝึกหัด

1.ให้นักศึกษากำหนดค่าของ Array 1 มิติ และ Array 2 มิติ
ตอบ Array 1 มิติ คือ float nettotal[4];และ Array 2 มิติ คือ int name[5][10];


2.ให้นักศึกษาหาค่าของ A[2] , A[6] จากค่าA={2,8,16,24, 9,7,3,8,}
ตอบ A[2] คือ 16A[6] คือ 3

3
.จากค่าของ int a [2][3] = {{6,5,4},{3,2,1}}; ให้นักศึกษา หาค่าของ a[1][0]และa[0][2]
ตอบ a[1][0] คือ 3 a[0][2] คือ 4

4.ให้นักศึกษากำหนด structure ที่มีค่าของข้อมูลจากน้อย 6 Records

ตอบ
struct STD
{
char name[30];
char lastname[40];
int age;char address[100];
char phoneno[10];
char position[30];
int idcode;}student;

5. ให้นักศึกษาบอกความแตกต่างของการกำหนดตัวชนิด Array กับตัวแปร Pointer ในสภาพของการกำหนดที่อยู่ ของข้อมูล
ตอบ array หมายถึง ตัวแปรชุดที่ใช้เก็บตัวแปรชนิดเดียว กันไว้ด้วยกัน เช่น เก็บ ข้อมูล char ไว้กับ char เก็บ int ไว้ กับ int ไม่สามารถเก็บข้อมูลต่างชนิดกันได้ เช่น char กับ int เรียก array อีกอย่างว่าหน่วยความจำแบ่งเป็นช่อง การ กำหนดสมาชิกชิกของ array จะเขียนภายในเครื่องหมาย [ ]pointer หมายถึง ตัวเก็บตำแหน่งที่อยู่ของหน่วยความจำ (Address) หรือเรียกว่า ตัวชี้ ตำแหน่งที่อยู่ สัญลักษณ์ของ pointer จะแทนด้วยเครื่องหมาย *

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

DTS: 03-01/07/2552

เรื่อง Set and String

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

โครงสร้างข้อมูลแบบสตริง
สตริง (String) หรือ สตริงของอักขระ (Character String) เป็นข้อมูลที่ประกอบไปด้วย ตัวอักษร ตัวเลขหรือ เครื่อง หมายเรียงติดต่อกันไป รวมทั้งช่องว่าง

สตริงกับอะเรย์
สตริง คือ อะเรย์ของอักขระ เช่น char a[6] อาจจะเป็นอะเรย์ ขนาด 6 ช่องอักขระ หรือ เป็นสตริงขนาด 5 อักขระก็ได้ โดย จุดสิ้นสุดของ string จะจบด้วย \0 หรือ null character เช่น char a[ ]={‘H’, ‘E’, ‘L’, ‘L’, ‘O’, ‘\0’}; char a[ ]=“HELLO”;

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