STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Bansomdej Chaopraya Rajabhat University
Advertisements

Stack Holidays/seasonal content.
ลักษณะการทำงานของ Stack
สแตค(stack) โครงสร้างข้อมูลแบบ Stack - การสร้าง Stack
กองซ้อน ยอดกองซ้อน (stack).
โครงสร้างข้อมูลแบบกองซ้อน (Stack)
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
อสมการเชิงเส้นตัวแปรเดียว
โรงเรียนนวมินทราชินูทิศ เตรียมอุดมศึกษาพัฒนาการ
บทที่ 6 บทที่ 6 คำสั่งแก้ไขปัญหาแบบ เลือก (CONDITION)
บทที่ 5 การควบคุมทิศทางการทำงานของโปรแกรม
1.NET Framework Class อุทัย เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร วิทยาเขต สารสนเทศพะเยา.
จัดทำโดย น. ส. ดวงกมล งามอยู่เจริญ เลขที่ 8 น. ส. ณัชชา เชื้อตา เลขที่ 6 เตรียมบริหารธุรกิจปี 1.
สื่อการสอนด้วยโปรมแกรม “Microsoft Multipoint”
LAB ตัวแปร : Variables ในการเขียนโปรแกรมเราต้องการให้โปรแกรม จดจำค่าต่างๆ ไว้ เช่นเมื่อรับค่าข้อมูลจาก ผู้ใช้ หรือค่าที่ได้จากการคำนวณใดๆ ค่า.
Chapter 10 Arrays Dept of Computer Engineering Khon Kaen University.
ชนิดของข้อมูล และการคำนวณทางคณิตศาสตร์
Pushdown Automata : PDA
การเขียนโปรแกรมภาษาปาสคาล โดยใช้โครงสร้างหลักทั้ง 3 โครงสร้าง
กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
หน่วยที่ 5 การเวียนเกิด
DATA STRUCTURE AND ALGORITHM Linked List.
และสร้างเว็บไซต์ประเภทCMS
การเขียนผังงานเบื้องต้น (Flow chart)
หน่วยที่ 6 แถวลำดับ (Array)
Queue Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
ครั้งที่ 7 รีจิสเตอร์ (REGISTER). รีจิสเตอร์ (Register) รีจิสเตอร์เป็นวงจรความจำที่ใช้ในการเก็บค่า ทางไบนารี่ ใช้ในการเก็บค่าในระหว่างการ ประมวลผลโดยใช้ฟลิป.
MEE 231 Computer Programming สัปดาห์ที่ 6 ภาษา C หลักการของโปรแกรม ชนิดของตัวแปร การดำเนินการ คำสั่งการรับค่าตัวแปร และการแสดงผล.
การเลือกข้อมูลจาก List การกำหนดเงื่อนไขการป้อนข้อมูลด้วย Data Validation การใส่ Comment / แสดง / แก้ไข / ลบ.
MTH 261 File Management. File Management File Management จะอธิบายเกี่ยวกับการเขียน ส่วนจัดการแฟ้มข้อมูล เราสามารถที่จะเขียน โปรแกรมเพื่อเรียกใช้แฟ้มข้อมูลที่เรามี
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
คำสั่งควบคุมการทำงาน
หน่วยที่ 1 ปริมาณทางฟิสิกส์ และเวกเตอร์
เกม คณิตคิดเร็ว.
Burin Rujjanapan Updated:
การจัดการโปรเซส T.Kunlaya Charoenmongkonvilai
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
รายการ(List) [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
อนุกรมอนันต์และการลู่เข้า
การประยุกต์ Logic Gates ภาค 2
บทที่ 3 การพัฒนาโปรแกรมโดยเขียนคำสั่ง VBA
บทที่ 1 สถาปัตยกรรมของระบบฐานข้อมูล (Database Architecture)
Stack Sanchai Yeewiyom
แล้วทำการเรียงลำดับข้อมูลใหม่โดยเรียงจากน้อยไปหามาก
รายการ(List) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
BC320 Introduction to Computer Programming
DC Voltmeter.
โครงสร้างภาษา C Arduino
QUEUE คิวจะมีโครงสร้างแบบเชิงเส้นเหมือน stack แต่แตกต่างตรงที่ queue มีตัวชี้ 2 ตัวคือ หัว(Head) และหาง(Tail) โดยการใส่ข้อมูลเข้าและนำข้อมูลออก จะมีลักษณะ.
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
บทที่ 8 เงื่อนไขตัดสินใจ
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์และเทคโนโลยีสารสนเทศ
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
Data storage II Introduction to Computer Science ( )
บริษัท พัฒนาวิชาการ (2535) จำกัด
โครงสร้างข้อมูลแบบสแตก (stack)
บทที่7 ทฤษฎีกราฟเบื้องต้น
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
หน่วยที่ 6 อะเรย์ของอักขระ
บทที่ 7 การประมวลผลอาร์เรย์
OPERATOR ภาษาปาสคาล (Pascal)
2 โครงสร้างข้อมูลแบบสแตก (STACK).
3 โครงสร้างข้อมูลแบบคิว (QUEUE).
บทที่ 2 โครงสร้างข้อมูลแบบแถวลำดับหรืออาร์เรย์ (Array)
Chapter 3 : Array.
Array: One Dimension Programming I 9.
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
Decision: Single and Double Selection (if and if-else statement)
ใบสำเนางานนำเสนอ:

STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack หลังข้อมูลที่เข้าไปใน stack ทีหลัง นั่นคือ การ "เข้าทีหลังแต่ออกก่อน" (Last In First Out : LIFO)

STACK การกระทำ(Operation) ที่เกี่ยวข้องกับโครงสร้างข้อมูลแบบ Stackประกอบด้วย การสร้าง stack (CREATE) การนำสมาชิกลง stack (PUSH) การนำสมาชิกออกจาก stack (POP) การทดสอบว่า stack ว่างหรือไม่(EMPTY) การทดสอบว่า stack เต็มหรือไม่(FULL) การทำให้ stack เป็น stack ว่าง(CLEAR)

STACK การสร้าง stack ด้วย Array การสร้าง stack ด้วย Link List หมายถึง การแทนที่ข้อมูลของ stack ด้วย array ซึ่ง เป็นการจัดสรรเนื้อที่หน่วยความจำแบบ static นั่นคือ มีการกำหนดขนาดของ stack ล่วงหน้าว่ามีขนาดเท่าใด และจะมีการจัดสรรเนื้อที่หน่วยความจำให้เลย การสร้าง stack ด้วย Link List หมายถึง การแทนที่ข้อมูลของ stack ด้วย Link list ซึ่งเป็นการจัดสรรเนื้อที่หน่วยความจำแบบ Dynamic นั่นคือ หน่วยความจำจะถูกจัดสรรเมื่อมีการของใช้จริงๆ ระหว่างการประมวลผลโปรแกรมผ่านตัวแปรชนิด Pointer

STACK Algorithm Push(STACK,TOP,MAXSTK,ITEM) If TOP = MAXSTK Then Print “OVERFLOW” and Return else set TOP = TOP+1 set STACK[TOP]=ITEM Return

STACK การนำข้อมูลออกจาก Stack

STACK การนำข้อมูลออกจาก Stack Algorithm POP(STACK,TOP,ITEM) If TOP = 0 Then Print “UNDERFLOW” and Return else set ITEM = STACK[TOP] set TOP = TOP-1 Return

STACK การประยุกต์ใช้ stack โครงสร้างข้อมูลแบบ stack มีการประยุกต์ใช้มากในการเขียนโปรแกรมของสาขาวิทยาการคอมพิวเตอร์ เช่น การจัดสรรหน่วยความจำในการประมวลผลโปรแกรม, การตรวจสอบอักขระสมดุล(Balancing Symbol) และการคำนวณค่านิพจน์เลขคณิตศาสตร์(Polish notation) เป็นต้น

STACK การประยุกต์ในการออกแบบตัวแปลชุดคำสั่ง(An application in compiler design) ตัวอย่าง PROGRAM MAIN ...... CALL Sub1 PRINT Q .... END MAIN PROCEDURE Sub1 CALL Sub2 A:=A+B ... END Sub1 PROCEDURE Sub2 END Sub2

STACK การตรวจสอบอักขระสมดุล(Balancing Symbol) 1. ให้อ่านอักขระทีละตัว - ถ้าอักขระเป็นอักขระเปิด เช่น {,(,[ เป็นต้น ให้ PUSH ลง stack - ถ้าอักขระเป็นอักขระปิด เช่น },),] เป็นต้น ให้ตรวจ สอบว่าอักขระบน TOP ของ stack เป็นอักขระเปิดที่ คู่กันหรือไม่ - ถ้าใช่ ให้ POP อักขระนั้นออกจาก stack - ถ้าไม่ใช่ ให้แสดงผล error 2.เมื่ออ่านอักขระหมดแล้ว แต่ stack ไม่เป็น stack ว่าง ให้ แสดงผล error

STACK โพลิช โนเตชัน(Polish Notation) เป็นวิธีการจัดรูปแบบของสมการใหม่ โดยให้เครื่องหมายอยู่หน้าตัวดำเนินการ เช่น 2*3 เขียนเป็น *23 เป็นต้น ในกรณีเครื่องหมายหลายตัว เช่น (5+2)*3 = (+52)*3 = *(+52)3 = *+523 เป็นต้น รูปแบบการเขียนสมการ โพลิช โนเตชัน หรือ Prefix Infix: การเขียนสมการโดยให้เครื่องหมายอยู่ระหว่างตัวดำเนินการ เช่น (10/2-2)*2+2 Postfix: การเขียนสมการโดยให้เครื่องหมายอยู่หลังตัวดำเนินการ เช่น 10 , 2 , / , 2 , - , 2 , * , 2 , +

STACK Algorithm การเปลี่ยน Infix เป็น Postfix ให้ EXP เป็นสมการคณิตศาสตร์ที่เป็น Infix Stack เป็น stack ใดๆ และ NEXP เป็นสมการที่เป็น Postfix 1. ใส่ “(“ เข้าไปใน Stack 2. อ่าน EXP จากซ้ายไปขวา 2.1 ถ้าพบตัวถูกดำเนินการ(ตัวเลข) ให้ใส่เข้าไปใน NEXP 2.2 ถ้าพบ “(“ ให้ push ใส่ stack 2.3 ถ้าพบตัวดำเนินการ(เครื่องหมาย) ให้ทำดังนี้ - ให้ pop ตัวดำเนินการ ทุกตัวที่มีลำดับความสำคัญกว่าตัวดำเนินการที่ พบใน 2.3 ออกมาใส่ใน NEXP ให้หมด - นำตัวดำเนินการที่พบใน 2.3 push เข้าใน stack แทนที่ 2.4 ถ้าพบ “)” ให้ทำดังนี้ - ให้ push ตัวดำเนินการ ทุกตัวมาใส่ไว้ใน NEXP ให้หมดจนพบ “(“ - push “(“ ทิ้ง 3. จบการทำงาน

STACK ตัวอย่าง ลำดับที่ EXP Stack NEXP 1 (10/2-2)*2+2) ( 2 (( 3 /2-2)*2+2) 10 4 2-2)*2+2) ((/ 5 -2)*2+2) 10,2 6 2)*2+2) ((- 10,2,/ 7 )*2+2) 10,2,/,2 8 *2+2) 10,2,/,2,- 9 2+2) (* +2) 10,2,/,2,-,2 11 2) (+ 10,2,/,2,-,2,* 12 ) 10,2,/,2,-,2,*,2 13 10,2,/,2,-,2,*,2,+ ตัวอย่าง

STACK โพลิช โนเตชัน(Polish Notation) วิธีการเปลี่ยน Infix เป็น Postfix 1. Completely parnthesize th infix notation to specify the order of all operations 2. Move each operator to the space held by its corressponding right parenthesis 3. Remove all parenthesis ตัวอย่าง A/B^C+D*E-A*C ผลลัพธ์ข้อ 1--> (((A/(B^C))+(D*E))-(A*C)) ผลลัพธ์ข้อ 2--> (((A(BC)^)/(DE)*)+(AC)*) - ผลลัพธ์ข้อ 3--> ABC^/DE*+AC*-

STACK โพลิช โนเตชัน(Polish Notation) Algorithm การคำนวณแบบ Postfix ให้อ่านข้อมูลจากซ้ายไปขวาทีละตัว ถ้าพบตัวถูกดำเนินการ(ตัวเลข) ให้ push stack ถ้าพบตัวดำเนินการ(เครื่องหมาย) ให้ pop item บนสุดของ stack 2 ตัว แล้วทำการคำนวณตามเครื่องหมายที่พบ แล้วนำผลลัพธ์ที่ได้ push stack ทำซ้ำจนกระทั่งหมดข้อมูล

STACK ตัวอย่าง โพลิช โนเตชัน(Polish Notation) สมการ Stack การทำงาน 10,2,/,2,-,2,*,2,+ 10 Push 10 2,/,2,-,2,*,2,+ 10 2 Push 2 /,2,-,2,*,2,+ 5 10/2 2,-,2,*,2,+ 5 2 -,2,*,2,+ 3 5-2 2,*,2,+ 3 2 *,2,+ 6 3*2 2,+ 6 2 + 8 6+2

STACK วิธีคำนวณแบบที่ 2 10, 2, /, 2, -, 2, *, 2, + 5 3 6 8

แบบฝึกหัด แปลงนิพจน์ต่อไปนี้ให้เป็นนิพจน์ Postfix A+B-C*E/(A+B) (A+B)*(C-D)-E*F (A+B)*(C*(D-E)+F)-G A+((B-C)*(D-E)+F)/G-H-J A*(B+D)/A-F-E*(G+H/K)