190 likes | 289 Views
Stack 204311 การจัดการแฟ้มข้อมูลและโครงสร้างข้อมูล File Management and Data Structure. บรรยายครั้งที่ 2 : Stack. วัตถุประสงค์ : นักศึกษาสามารถ อธิบายโครงสร้างข้อมูลแบบ Stack ได้ถูกต้อง
E N D
Stack204311การจัดการแฟ้มข้อมูลและโครงสร้างข้อมูลFile Management and Data Structure
บรรยายครั้งที่ 2:Stack • วัตถุประสงค์ : นักศึกษาสามารถ • อธิบายโครงสร้างข้อมูลแบบ Stack ได้ถูกต้อง • เขียนโปรแกรมด้วยภาษา Visual Basicในการดำเดินการต่าง ๆ ตามโครงสร้างข้อมูลแบบ Stack ได้แก่การ Push และ Pop
หัวข้อการบรรยาย • แนะนำ Stack • โอเปอร์เรชั่นพื้นฐานที่ทำกับแสตก • แสตกรูปแบบอื่นๆ • การประยุกต์ใช้แสตก
แนะนำ Stack C B A
แนะนำ Stack C B A
แนะนำ Stack E D F B A
แนะนำ Stack E D F B A
แนะนำ Stack D F B A
ขบวนการพื้นฐานที่ทำกับแสตกขบวนการพื้นฐานที่ทำกับแสตก • Push • Pop • Empty • Full
ขบวนการพื้นฐานที่ทำกับแสตกขบวนการพื้นฐานที่ทำกับแสตก • ตัวอย่าง
ขบวนการพื้นฐานที่ทำกับแสตกขบวนการพื้นฐานที่ทำกับแสตก // Stack.cpp #include <stdio.h> #include <conio.h> int top = 0; void PrintStack(char *); int Push(char *, char); char Pop(char *); int IsEmpty(char *); // 0Not Empty, 1Empty int IsFull(char *); // 0Not Full, 1Full
ขบวนการพื้นฐานที่ทำกับแสตกขบวนการพื้นฐานที่ทำกับแสตก main() { char select=0; char stack[10] = {'\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0'}; char element; clrscr(); do { printf("\n\nMenu\n"); printf("======\n"); printf("1. Push\n"); printf("2. Pop\n"); printf("3. Exit\n"); printf("Please select operation: "); select = getche(); switch(select) { case '1': printf("\nEnter a character to push: "); element = getche(); Push(stack, element); break; case '2': printf("\nPop stack and get: %c", Pop(stack)); break; default : break; } PrintStack(stack); } while(select != '3'); return(0); }
ขบวนการพื้นฐานที่ทำกับแสตกขบวนการพื้นฐานที่ทำกับแสตก printf("1. Push\n"); printf("2. Pop\n"); printf("3. Exit\n"); printf("Please select operation: "); select = getche(); switch(select) { case '1': printf("\nEnter a character to push: "); element = getche(); Push(stack, element); break; case '2': printf("\nPop stack and get: %c", Pop(stack)); break; default : break;
ขบวนการพื้นฐานที่ทำกับแสตกขบวนการพื้นฐานที่ทำกับแสตก int Push(char * stack, char element) { stack[top] = element; top += 1; // incrase top by 1 return top; }
ขบวนการพื้นฐานที่ทำกับแสตกขบวนการพื้นฐานที่ทำกับแสตก char Pop(char * stack) { char topelement; topelement=stack[top-1]; stack[top-1]='\0'; top -= 1; return(topelement); }
ขบวนการพื้นฐานที่ทำกับแสตกขบวนการพื้นฐานที่ทำกับแสตก void PrintStack(char * stack) { int i = 0; printf("\n"); for(i=9;i>=0;i--) { printf("\n | %c |", stack[i]); } printf("\n _____"); printf("\n Top : %d", top); }
แสตกรูปแบบอื่นๆ • ลิงค์แสตก
กระประยุกต์ใช้แสตก • การคำนวณ และการแปลงนิพจน์ทางคณิตศาสตร์ • แนวคิดในการคอมไพล์ • Factorials • Fibonacci