14 ตุลาคม 2552

ลูกแรดเตรียมพร้อมล่าเหยื่อ

สิ่งที่ได้รับจากการฝึกประสบการณ์วิชาชีพ

1 ได้รู้จักการมีความสามัคคีในการทำงานร่วมกัน
2 ได้รู้ถึงวิธีการเตรียมพร้อมในการที่จะเข้าไปฝึกงานในสถานที่จริง
3 ได้รู้ถึงวิธีการทำงานร่วมกับผู้อื่น
4 สามารถแก้ไขปัญหาเฉพาะหน้าได้
5 ได้ฝึกอบรมเรื่องบุคลิกภาพ
6 ได้นำความรู้ที่ศึกษามาใช้ในการปฎิบัติงานจริง
7 สามารถพัฒนาตนเองให้มีประสิทธิภาพมากขึ้น
8 มีความกระตือรือร้นเพื่อตอบรับสิ่งต่างๆรอบตัวที่มีการเปลี่ยนแปลงอยู่ตลอดเวลา
9 มีความรับผิดชอบงานมากขึ้น
10 มีความตรงต่อเวลามากขึ้น

02 กันยายน 2552

DTS09-02-09-52


เรื่อง กราฟ (GRAPH)

กราฟ (Graph) เป็นโครงสร้างข้อมูลไม่เป็นเชิงเส้น (Nonlinear Data Structure) มีความแตกต่างจากโครงสร้างข้อมูลทรีในบทที่ผ่านมา แต่เป็นลักษณะพิเศษแบบหนี่งของกราฟโดยทรีเป็นกราฟอะไซคลิกที่ไม่มีการวนลูปและการวนถอยกลับ เป็นกราฟเชื่อมกันที่มีเพียงเอจเดียวระหว่างสองโหนด
กราฟเป็นโครงสร้างข้อมูลประเภทหนึ่งที่แสดงความสัมพันธ์ระหว่าง vertex และ edge กราฟจะประกอบด้วยกลุ่มของ vertex ซึ่งแสดงในกราฟด้วยสัญลักษณ์รูปวงกลม และ กลุ่มของ edge (เส้นเชื่อมระหว่าง vertex) ใช้แสดงถึงความสัมพันธ์ระหว่าง vertex หากมี vertex ตั้งแต่ 2 vertex ขึ้นไปมีความสัมพันธ์กัน ใช้สัญลักษณ์เส้นตรงซึ่งอาจมีหัวลูกศร หรือไม่มีก็ได้
กราฟสามารถเขียนแทนด้วยสัญลักษณ์ ดังนี้
G = ( V , E )
G คือ กราฟ
V คือ กลุ่มของ vertex
E คือ กลุ่มของ edge
ศัพท์ที่เกี่ยวข้อง
1.เวอร์เทก (Vertex) หมายถึง โหนด
2.เอดจ (Edge) หมายถึง เส้นเชื่อมของโหนด
3.ดีกรี (Degree) หมายถึง จำนวนเส้นเข้าและออก ของโหนดแต่ละโหนด
4.แอดจาเซนท์โหนด (Adjacent Node) หมายถึง โหนดที่มีการเชื่อมโยงกัน
ตัวอย่างของกราฟในชีวิตประจำวัน เช่น กราฟของการเดินทางระหว่างเมือง ซึ่ง vertex คือ กลุ่มของเมืองต่างๆ และ edge คือ เส้นทางเดินระหว่างเมือง หรือ ในเครือข่ายคอมพิวเตอร์ (Computer Network) vertex ก็คือ กลุ่มของเครื่องคอมพิวเตอร์ หรือโหนดต่างๆ และ edge ก็คือ เส้นทางการติดต่อสื่อสารระหว่างโหนดต่างๆ เป็นต้น
ประเภทของกราฟ
แบ่งเป็น 3 ประเภทโดยแบ่งตามประเภทของ edge ได้ดังนี้
1. Direct Graph (กราฟแสดงทิศทาง) เป็นกราฟที่แสดงเส้นเชื่อมระหว่าง vertex โดแสดงทิศทางของการเชื่อมต่อด้วย




2. Undirected Graph กราฟที่แสดงเส้นเชื่อมต่อระหว่าง vertex แต่ไม่แสดงทิศทางของการเชื่อมต่อ



3. Cyclic Graph กราฟที่มีเส้นเชื่อมต่อระหว่าง vertex ที่ทำให้ vertex มีลักษณะเป็นวงจรปิด (Cycle) เส้นเชื่อมต่อระหว่าง vertex อาจจะแสดงทิศทางหรือไม่แสดงทิศทางการเชื่อมต่อก็ได้




เส้นทาง (Path)
เส้นทางคือการเดินทางจาก vertex หนึ่งไปยังอีก vertex หนึ่งที่ต้องการ โดยผ่าน edge ที่เชื่อมระหว่าง vertex
ความยาวของเส้นทาง (The length of path) คือ จำนวนของ edge ในเส้นทางเดินนั้น ว่ามีจำนวนเท่าไหร่ ในการเดินทางจาก vertex หนึ่ง ไปยังอีก vertex หนึ่ง ถ้าหากเส้นทางประกอบด้วย vertex จำนวน N ความยาวของเส้นทางจะเท่ากับ N-1



ตัวอย่างเส้นทางการเดินทาง จาก vertex A ไป vertex D จะมีเส้นทางดังนี้




ตัวอย่างเส้นทางการเดินทาง จาก vertex A ไป vertex D จะมีเส้นทางดังนี้



การแทนที่กราฟด้วยเมตริกซ์
โครงสร้างข้อมูลประเภทกราฟสามารถใช้เมตริกซ์มาแสดงแทนได้ โดยกราฟที่ประกอบด้วย vertex จำนวน N vertex สามารถแทนที่ด้วยเมตริกซ์ขนาด N x N โดยค่าในเมตริกซ์จะประกอบด้วย ค่า 0 และ 1
ค่า 0 จะใช้แทนไม่มี edge ความยาว 1 เชื่อมต่อจากต้นทางไปปลายทาง และ
ค่า 1 จะใช้แทนมี edge ความยาว 1 เชื่อมต่อจากต้นทางไปปลายทาง
ตัวอย่างจากรูปกราฟแบบ Direct Graph


สามารถแทนที่กราฟด้วยเมตริกซ์ดังนี้



DTS08-26-08-52

เรื่อง ทรี (tree)


ทรี (Tree) เป็นโครงสร้างข้อมูลที่ความสัมพันธ์ ระหว่างโหนดจะมีความสัมพันธ์ลดหลั่นกันเป็นลำดับชั้น (Hierarchical Relationship) ได้มีการนำรูปแบบทรีไปประยุกต์ใช้ในงานต่าง ๆ อย่างแพร่หลาย ส่วนมากจะใช้สำหรับแสดงความสัมพันธ์ระหว่างข้อมูล เช่น แผนผังองค์ประกอบของหน่วยงานต่าง ๆ โครงสร้างสารบัญหนังสือ แต่ละโหนดจะมีความสัมพันธ์กับโหนดในระดับที่ต่ำลงมาหนึ่งระดับได้หลาย ๆ โนด เรียกโหนดดังกล่าวว่า โหนดแม่ (Parent or Mother Node) โหนดที่อยู่ต่ำกว่าโหนดแม่อยู่หนึ่งระดับ เรียกว่า โหนดลูก(Child or Sun Node) โหนดที่อยู่ในระดับสูงสุดและไม่มีโหนดแม่ เรียกว่า โหนดราก (Root Node) โหนดที่มีโหนดแม่เป็นโหนดเดียวกัน เรียกว่า โหนดพี่น้อง (Siblings) โหนดที่ไม่มีโหนดลูก เรียกว่า โหนดใบ (Leave Node) เส้นเชื่อมแสดงความสัมพันธ์ระหว่างโหนดสองโหนดเรียกว่า กิ่ง (Branch) Ancestor Node หรือ บรรพบุรุษของโหนดใด ๆ หมายถึง โหนดที่มาก่อนโหนดใด ๆ Decendant Node หรือ ผู้สืบสกุล หมายถึง โหนดที่ตามหลังโหนดใด ๆ


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





2. นิยามทรีด้วยรูปแบบรีเคอร์ซีฟ ทรีประกอบด้วยสมาชิกที่เรียกว่า โหนด โดยที่ถ้าว่าง ไม่มีโหนดเลย เรียกว่า นัลทรี (Null Tree) และถ้ามีโหนดหนึ่งเป็นโหนดราก ส่วนที่เหลือจะแบ่งเป็นทรีย่อย (Sub Tree) T1, T2, T3,…,Tk โดยที่ k>=0 และทรีย่อยต้องมีคุณสมบัติเป็นทรี




3. นิยามที่เกี่ยวข้องกับทรี 1. ฟอร์เรสต์ (Forest) หมายถึง กลุ่มของทรีที่เกิดจากการเอาโหนดรากของทรีออก หรือ เซตของทรีที่แยกจากกัน (Disjoint Trees)











2. ทรีที่มีแบบแผน (Ordered Tree) หมายถึง ทรีที่โหนดต่าง ๆ ในทรีนั้นมีความสัมพันธ์ที่แน่นอน เช่น ไปทางขวาไปทางซ้าย เป็นต้น







3. ทรีคล้าย (Similar Tree) คือ ทรีที่มีโครงสร้างเหมือนกัน หรือทรีที่มีรูปร่างของทรีเหมือนกัน โดยไม่คำนึงถึงข้อมูลที่อยู่ในแต่ละโหนด








4. ทรีเหมือน (Equivalent Tree) คือ ทรีที่เหมือนกันโดยสมบูรณ์ โดยต้องเป็นทรีที่คล้ายกันและแต่ละโหนดในตำแหน่งเดียวกันมีข้อมูลเหมือนกัน






5. กำลัง (Degree) หมายถึง จำนวนทรีย่อยของโหนดนั้น


6. ระดับของโหนด (Level of Node) คือ ระยะทางในแนวดิ่งของโหนดนั้น ๆ ที่อยู่ห่างจากโหนดราก เมื่อกำหนดให้โหนดรากของทรีนั้นอยู่ระดับ 1 และกิ่งแต่ละกิ่งมีความเท่ากันหมด คือ ยาวเท่ากับ 1 หน่วย ซึ่งระดับของโหนดจะเท่ากับจำนวนกิ่งที่น้อยที่สุดจากโหนดรากไปยังโหนดใด ๆ บวกด้วย 1 และจำนวนเส้นทางตามแนวดิ่งของโหนดใด ๆ ซึ่งห่างจากโหนดราก เรียกว่า ความสูง (Height) หรือความลึก (Depth)


ไบนารีทรี คือ โหนดทุกโหนดใน Binary tree จะมีลูกไม่เกินสอง คือ 0 , 1 หรือ 2





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




ไบนารีทรีที่ทุก ๆ โหนดมีทรีย่อยทางซ้ายและทรีย่อยทางขวา ยกเว้นโหนดใบ และโหนดใบทุกโหนดจะต้องอยู่ที่ระดับเดียวกันเรียกว่า ไบนารีทรีแบบสมบูรณ์ (complete binary tree) สามารถคำนวณจำนวนโหนดทั้งหมดในไบนารีทรีแบบสมบูรณ์ได้ ถ้ากำหนดให้ L คือระดับของโหนดใด ๆ และ N คือจำนวนโหนดทั้งหมดในทรีจะได้ว่า ระดับ 1 มีจำนวนโหนด 1 โหนด ระดับ 2 มีจำนวนโหนด 3 โหนด ระดับ 3 มีจำนวนโหนด 7 โหนด ระดับ 4 มีจำนวนโหนด 15 โหนดระดับ L มีจำนวนโหนด 2L – 1 โหนด นั่นคือ จำนวนโหนดทั้งหมดในทรีสมบูรณ์ที่มี L ระดับสามารถคำนวณได้จากสูตรดังนี้




Strictly Binary tree หมายถึง ไบนารีทรีที่ non-Leaf Node ทุก ๆ โหนดจะต้องโหนดลูกอยู่ครบทั้ง 2 ข้าง






Almost Complete Binary tree (ไบนารีทรีแบบเกือบสมบูรณ์) หมายถึงไบนารีทรีที่ Height มีค่าเท่ากับ H ใดๆ (เมื่อ H มีค่าเป็นจำนวนเต็มใด ๆ) และ non-Leaf Node ทุก ๆ โหนดจะต้องอยู่ที่ 2 level ล่างสุดเท่านั้น (level ที่ H และ H-1)




การเก็บโครงสร้างข้อมูลแบบไบนารีทรีลงในหน่วยความจำมี 2 วิธี ซึ่งลักษณะเหมือนกับโครงสร้างข้อมูลประเภทลิเนียร์ (linear) กล่าวคือ การเก็บเป็นแบบอาร์เรย์ และลิงค์ลิสต์ โดยทั่วไปการเก็บหน่วยความจำแบบใดนั้นจะขึ้นอยู่กับความต้องการในการเข้าถึงข้อมูลได้โดยตรง โดยมีวิธีการต่อไปนี้ 1. การแทนที่ไบนารีทรีด้วยอาร์เรย์ (Array)การแทนทรีไบนารีทรีด้วยแบบสแตกหมายถึงการแทนที่ด้วยอาร์เรย์ ซึ่งจะต้องเป็นไบนารีทรีที่สมบูรณ์หรือเกือบสมบูรณ์ ให้ a เป็นอาร์เรย์มีขนาด n การดำเนินการบนอาร์เรย์โดยให้สมาชิกของ Root Node มาแทนที่ในตำแหน่งแรกของอาร์เรย์ คือ a[0] และนำสมาชิกโหนดซ้ายมาใส่ในตำแหน่งที่สองในอาร์เรย์ คือ a[1] และนำสมาชิกของโหนดขวามาใส่ในตำแหน่งที่สามในอาร์เรย์ คือ a[2] และนำสมาชิกโหนดซ้ายและขวาถัดไปมาใส่ในอาร์เรย์ไว้ตามลำดับ





2. การแทนที่ไบนารีทรีด้วยลิงค์ลิสต์ (Linked List) ไบนารีทรีจะเก็บในลักษณะไดนามิก (Dynamic) ก็คือลิงค์ลิสต์ ซึ่งมีการใช้พอยน์เตอร์ (Pointer) ใช้ชี้โหนดลูกซ้ายและขวาในหน่วยความจำ ถ้าหากโหนดใดไม่มีโหนดลูก หรือเป็น Leaf Node ก็ให้ค่าพอยเตอร์ในลิงค์ฟิลด์นั้นมีค่าเป็น NULL การแทนที่ข้อมูลทรีด้วยลิงค์ลิสต์นั้น จะทำการเก็บพอยน์เตอร์ซ้ายและขวา และถ้าเป็น Leaf Node พอยน์เตอร์ทั้งสองจะมีค่าเป็น 0






การท่องไปในทรี
ปฏิบัติการที่สำคัญในไบนารีทรี คือ การท่องไปในไบนารีทรี (Traversing Binary Tree) เพื่อเข้าไปเยือนทุก ๆ โหนดในทรี ซึ่งวิธีการท่องเข้าไปต้องเป็นไปอย่างมีระบบแบบแผน สามารถเยือนโหนดทุก ๆ โหนด ๆ ละหนึ่งครั้ง วิธีการท่องไปนั้นมีด้วยกันหลายแบบแล้วแต่ว่าต้องการลำดับขั้นตอนการเยือนอย่างไร โหนดที่ถูกเยือนอาจเป็นโหนดแม่ (แทนด้วย N) ทรีย่อยทางซ้าย (แทนด้วย L) หรือทรีย่อยทางขวา (แทนด้วย R)มีวิธีการท่องเข้าไปในทรี 6 วิธี คือ NLR LNR LRN NRL RNL และ RLN แต่วิธีการท่องเข้าไปไบนารีทรีที่นิยมใช้กันมากเป็นการท่องจากซ้ายไปขวา 3 แบบแรกเท่านั้นคือ NLR LNR และ LRN ซึ่งลักษณะการนิยามเป็นนิยามแบบ รีเคอร์ซีฟ (Recursive) ซึ่งขั้นตอนการท่องไปในแต่ละแบบมีดังนี้


1. การท่องไปแบบพรีออร์เดอร์ (Preorder Traversal) เป็นการเดินเข้าไปเยือนโหนดต่าง ๆ ในทรีด้วยวิธี NLR มีขั้นตอนการเดินดังต่อไปนี้

(1) เยือนโหนดราก
(2) ท่องไปในทรีย่อยทางซ้ายแบบพรีออร์เดอร์
(3) ท่องไปในทรีย่อยทางขวาแบบพรีออร์เดอร์


2. การท่องไปแบบอินออร์เดอร์ (Inorder Traversal) เป็นการเดินเข้าไปเยือนโหนดต่าง ๆ ในทรีด้วยวิธี LNR มีขั้นตอนการเดินดังต่อไปนี้

(1) ท่องไปในทรีย่อยทางซ้ายแบบอินออร์เดอร์
(2) เยือนโหนดราก
(3) ท่องไปในทรีย่อยทางขวาแบบอินออร์เดอร์


3. การท่องไปแบบโพสออร์เดอร์ (Postorder Traversal) เป็นการเดินเข้าไปเยือนโหนดต่าง ๆ ในทรีด้วยวิธี LRN มีขั้นตอนการเดินดังต่อไปนี้



(1) ท่องไปในทรีย่อยทางซ้ายแบบโพสต์ออร์เดอร์
(2) ท่องไปในทรีย่อยทางขวาแบบโพสต์ออร์เดอร์
(3) เยือนโหนดราก







เส้นทางการท่องในทรีแบบโพสต์ออร์เดอร์ จะได้ GDBHIEFCA







เส้นทางการท่องในทรีแบบอินออร์เดอร์ จะได้ DGBAHEICF





เส้นทางการท่องในทรีแบบพรีออร์เดอร์ จะได้ ABDGCEHIF

DTS07-05-08-52

เรื่อง คิว (QUEUE)

คิวเป็นโครงสร้างข้อมูลแบบลำดับ (Sequential) ลักษณะของคิวเราสามารถพบได้ในชีวิตประจำวัน เช่น การเข้าแถวตามคิวเพื่อรอรับบริการต่างๆ ลำดับการสั่งพิมพ์งาน เป็นต้น ซึ่งจะเห็นได้ว่าลักษณะของการทำงานจะเป็นแบบใครมาเข้าคิวก่อน จะได้รับบริการก่อน เรียกได้ว่าเป็นลักษณะการทำงานแบบ FIFO (First In , First Out) ลักษณะของคิว จะมีปลายสองข้าง ซึ่งข้างหนึ่งจะเป็นช่องทางสำหรับข้อมูลเข้าที่เรียกว่า REAR และอีกข้างหนึ่งซึ่งจะเป็นช่องทางสำหรับข้อมูลออก เรียกว่า FRONT




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

1. Create Queue

2. Enqueue

3. Dequeue

4. Queue Front

5. Queue Rear

6. Empty Queue

7. Full Queue

8. Queue Count

9. Destroy Queue



การทำงานของคิวการใส่สมาชิกตัวใหม่ลงในคิวเรียกว่า Enqueue ซึ่งมีรูปแบบคือenqueue (queue, newElement) หมายถึง การใส่ข้อมูลnewElement ลงไปที่ส่วนเรียร์







การนำสมาชิกออกจากคิว เรียกว่า Dequeue ซึ่งมีรูปแบบคือdequeue (queue, element)หมายถึง การนำออกจากส่วนหน้า ของคิวและให้ ข้อมูลนั้นกับ element






การนำข้อมูลที่อยู่ตอนต้นของคิวมาแสดงจะ เรียกว่า Queue Frontแต่จะไม่ทำการเอาข้อมูลออกจากคิว


การนำข้อมูลที่อยู่ตอนท้ายของคิวมาแสดงจะ เรียกว่าQueue Rear แต่จะไม่ทำการเพิ่มข้อมูลเข้าไปในคิว







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

2. การแทนที่ข้อมูลของคิวแบบอะเรย์



การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสต จะประกอบไปด้วย 2 ส่วน คือ


1. Head Node จะประกอบไปด้วย 3 ส่วนคือ พอยเตอร์จำนวน 2 ตัว คือ Front และ rear กับจำนวนสมาชิกในคิว

2. Data Node จะประกอบไปด้วย ข้อมูล (Data) และพอยเตอร์ที่ชี้ไปยังข้อมูลตัวถัดไป





03 สิงหาคม 2552

DTS06-29-07-52

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

1. Create Stack 5. Empty Stack

2. Push Stack 6. Full Stack

3. Pop Stack 7. Stack Count

4. Stack Top 8. Destroy Stack


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 เป็นการลบข้อมูลทั้งหมดที่อยู่ใน สแตก


เราสามารถแปลงนิพจน์ Infix ให้เป็น Postfix ได้โดยอาศัยสแตคที่มีคุณสมบัติการเข้าหลังออกก่อนหรือ LIFO โดยมีอัลกอริทึมในการแปลงนิพจน์ ดังนี้1. ถ้าข้อมูลเข้า (input) เป็นตัวถูกดำเนินการ (operand) ให้นำออกไปเป็นผลลัพธ์ (output)
2. ถ้าข้อมูลเข้าเป็นตัวดำเนินการ (operator) ให้ดำเนินการดังนี้
2.1 ถ้าสแตคว่าง ให้ push operator ลงในสแตค
2.2 ถ้าสแตคไม่ว่าง ให้เปรียบเทียบ operator ที่เข้ามากับ operator ที่อยู่ในตำแหน่ง TOP ของสแตค
2.2.1 ถ้า operator ที่เข้ามามีความสำคัญมากกว่า operator ที่ตำแหน่ง TOP ของสแตคให้ push ลงสแตค
2.2.2 ถ้า operator ที่เข้ามามีความสำคัญน้อยกว่าหรือเท่ากับ operator ที่อยู่ในตำแหน่ง TOP ของสแตค ให้ pop สแตคออกไป ผลลัพธ์ แล้วทำการเปรียบเทียบ operator ที่เข้ามากับ operator ที่ตำแหน่ง TOP ต่อไป จะหยุดจนกว่า operator ที่เข้ามา
ความสำคัญมากกว่า operator ที่ตำแหน่ง TOP ของสแตค แล้วจึง push operator ที่เข้ามานั้นลงสแตค
3. ถ้าข้อมูลเข้าเป็นวงเล็บเปิด ให้ push ลงสแตค
4. ถ้าข้อมูลเข้าเป็นวงเล็บปิด ให้ pop ข้อมูลออกจากสแตคไปเป็นผลลัพธ์จนกว่าจะถึงวงเล็บ เปิด จากนั้นทิ้งวงเล็บเปิดและปิดทิ้งไป
5. ถ้าข้อมูลเข้าหมด ให้ pop ข้อมูลออกจากสแตคไปเป็นผลลัพธ์จนกว่าสแตคจะว่าง

ตัวอย่างการแปลงนิพจน์ Infix เป็นนิพจน์ Postfixนิพจน์ A + B * C


23 กรกฎาคม 2552

DTS05-22-07-52

สรุปเรื่อง ลิงค์ลิสต์


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





สรุปเรื่องสแตค (Stack)


สแตคเป็นโครงสร้างข้อมูลที่มีลักษณะแบบลำดับ (sequential) ลักษณะที่สำคัญของสแตกคือ ข้อมูลที่ใส่หลังสุดจะถูกนำออกมา จากแสตกเป็นลำดับแรกสุด เราเรียกคุณสมบัตินี้ว่า LIFO (Last In First Out)การกระทำกับข้อมูลของสแตคประกอบไปด้วยการนำเข้าข้อมูลเข้า (PUSH) ที่ส่วนบนสุดของสแตค และการนำข้อมูลออก (POP) ที่ส่วนบนสุดของสแตคเช่นกัน ในการจะ Push ข้อมูลเข้าก็ต้องตรวจสอบด้วยว่าข้อมูลในสแตคเต็มหรือไม่ หากสแตคเต็มก็จะไม่สามารถ Push หรือนำข้อมูลเข้าได้ เช่นเดียวกับการ Pop ข้อมูลออกก็ต้องตรวจสอบด้วยว่ามีข้อมูลอยู่ในสแตคหรือไม่ หากไม่มีข้อมูลอยู่ในสแตคหรือสแตคว่าง (empty stack) ก็ไม่สามารถ pop ได้การนำข้อมูลเข้า-ออก จากสแตค (push , pop) จะมีลักษณะแบบเข้าหลัง ออกก่อน ยกตัวอย่างการทำงานแบบ LIFO เช่น


รูปแสดงลักษณะของสแตค ที่ประกอบด้วยข้อมูล A , B , C , D และ E มี TOP ที่ชี้ที่สมาชิกตัวบนสุดของสแตค



สำหรับการยกตัวอย่าง แสตกในชีวิตประจำวันคือ


ตั๋วรถเมล์


14 กรกฎาคม 2552

DTS03-01-07-52

สรุปเรื่องของสตริง

ขนาด คือ ความยาวของสตริงหรือแถวของอักขระสูงสุดที่ตัวแปรสตริงสามารถจัดเก็บได้ เช่น ตัวแปร Name สามารถจัดเก็บแถวของอักขระได้สูงสุด 20 ตัวอักขระ แต่ไม่จำเป็นต้องเก็บแถวของอักขระเท่ากับขนาดทุกครั้งไป เช่น ถ้าให้
Name = 'Nitiphon';
จะได้ว่าความยามของ Name เท่ากับ 8และตัวแปร Name จะมีโครงสร้างเป็นแถวของอักขระ คือ มี Name[0] ,Name[1], Name[2],...,Name[8]โดยจุดสิ้นสุดของสตริงจะจบด้วย null character เช่น

char a[]={'N','I','T','I','P','H','O','N','\O'};

char a[]="NITIPHON";


เรื่อง เซต อินเตอร์เซคชั่น

ถ้ากำหนดเซต A และ B ใดๆ อินเตอร์เซกชันของเซต A และ B คือ เซตใหม่ที่ประกอบด้วยสมาชิกที่อยู่ทั้งใน A และ B เขียนแทนด้วย หรือ
และ
ตัวอย่าง1. ถ้า A = {0 , 1 , 2 , 3} และ B = {1 , 3 , 5 , 7} จะได้ = {1 , 3}

ตัวอย่าง2. ถ้า W = {a , s , d , f} และ Z = {p , k , b} จะได้ = { }

ตัวอย่างรูปภาพ การ อินเตอร์เซกชั่น

เรื่อง ยูเนี่ยน
ถ้ากำหนดเซต A และ B ใดๆ ยูเนียนของเซต A และ B คือ เซตใหม่ที่ประกอบด้วยสมาชิกที่อยู่ใน A หรือ B เขียนแทนด้วย หรือ
หรือ
ตัวอย่าง1. ถ้า A = {0 , 1 , 2 , 3} และ B = {1 , 3 , 5 , 7} จะได้ = {0 , 1 , 2 , 3 , 5 , 7}
ตัวอย่าง3. ถ้า W = {a , s , d , f} และ Z = {p , k , b} จะได้ = {a , s , d , f , p , k , b}
ตัวอย่างภาพ การยูเนี่ยนกัน




27 มิถุนายน 2552

DTS02-24-06-52

สรุป
Array คือ กลุ่มคำชนิดเดียวกัน ที่เรียงลำดับกันอย่างมีแบบแผน Array จะมีตัวบอกมิติ ซึ่งเรียกว่า Subscript ถ้า Subscript มีมากกว่า 1ตัว ขึ้นไปเรียกว่า Array หลายมิติค่าต่ำสุดของ Subscript เรียกว่า ขอบเขตล่าง (lower bound)ค่าสูงสุดของ Subscript เรียกว่า ขอบเขตบน (upper bound)Array เราสามารถกำหนดค่าเริ่มต้นให้กับ Array ได้ดังนี้int [ ] a = {1, 2, 3,4,5};ในตัวอย่างนี้สร้างอาร์เรย์ชื่อว่า a เก็บสมาชิกทั้งหมด 5 ตัวการอ้างอิงถึงถึงสมาชิกอาร์เรย์ตำแหน่งสมาชิกตัวแรกคือ 0 ตัวที่สอง 1, เช่น int [ ] a = {1, 2, 3, 4, 5}ถ้าเราต้องการอ้างอิงถึงสมาชิกหมายเลข 1 เราก็เขียน a [0] ถ้าเป็นเลข 4 ก็เขียน a [3] เมื่อมีการใช้งาน Array ใน PHP เราจะต้องทำความเข้าใจ เกี่ยวกับคำว่า สมาชิก (Element) - ค่าของข้อมูลที่เก็บอยู่ใน Array คีย์ (Key) - ค่าที่ใช้ระบุตำแหน่งของสมาชิกใน Array โดยจะเริ่มที่ตำแหน่ง 0 เสมอ

ตัวอย่างของ Array
คีย์ (Key) -> 0 1 2 3 4 5 6
สมาชิก (Element) -> มกราคม กุมภาพันธ์ มีนาคม เมษายน พฤษภาคม มิถุนายน กรกฏาคม

struct telephone{
char name[30];
char id[7];
char color[10];
float size;
int weight;
int mmc_card;
float talk_time;
int image_size;
char messaging[20];
}product;

วีดีโอแนะนำตัว

24 มิถุนายน 2552

23 มิถุนายน 2552

ประวัติ


ชื่อ นางสาว นิติพร แจ้งขำ


MISS NITIPHON CHANGKHAM


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


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