51
โโโโโโโโโโโโโโโ โโโ Stack Data Structure Data Structure Department of Computer Science Department of Computer Science

โครงสร้างข้อมูลแบบ Stack

Embed Size (px)

DESCRIPTION

โครงสร้างข้อมูลแบบ Stack. Data Structure. Department of Computer Science. ลักษณะของโครงสร้างข้อมูลแบบ Stack. - PowerPoint PPT Presentation

Citation preview

Page 1: โครงสร้างข้อมูลแบบ  Stack

โครงสร�างข้�อมู�ลแบบ Stack

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 2: โครงสร้างข้อมูลแบบ  Stack

ล�กษณะข้องโครงสร�างข้�อมู�ลแบบStack

• ข้�อมู�ลที่�เก็�บใน Stack จะเก็�บในล�ก็ษณะวางที่�บ ก็�น เช่�นเดี�ยวก็�บก็ารวางจานเร�ยงซ้�อนก็�น ข้�อมู�ล

ตั�วแรก็จะเป็!นข้�อมู�ลที่�อย��ล�างสุ#ดีข้อง Stack และ ข้�อมู�ลสุ#ดีที่�ายจะเป็!นข้�อมู�ลที่�อย��บนสุ#ดี ข้อง

Stack เมู$อมู�ก็ารน%าข้�อมู�ลออก็จาก็ Stack ข้�อมู�ลที่�อย��บนสุ#ดี น�นคื$อข้�อมู�ลที่�น%าลงสุ��Stack เป็!นข้�อมู�ลสุ#ดีที่�าย จะเป็!นข้�อมู�ลที่�จะตั�องน%าออก็

จาก็ Stack ก็�อน ก็ารที่%างานล�ก็ษณะน�'เร�ยก็ว�าLIFO (last-in-first-out)

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 3: โครงสร้างข้อมูลแบบ  Stack

Push Stack• Algorithm

1. ตัรวจสุอบว�า Stack เตั�มู ? ( โดียก็ารตัรวจสุอบว�าTop เที่�าก็�บ N) - ถ้�า Stack เตั�มู ให้�แสุดีงข้�อคืวามูว�า "Stack Overflow" แล�วเล+ก็งาน- ถ้�า Stack ไมู�เตั�มู ให้�ที่%างานข้�อที่� 2 และ 3 2. ให้�เพิ่+มูคื�าข้อง Top อ�ก็ 1 3. ใสุ�ข้�อมู�ลลงใน Stack ในตั%าแห้น�งข้องตั�วแป็ร Top

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 4: โครงสร้างข้อมูลแบบ  Stack

Operation ข้อง Stack

1. Push Stack เป็!น operation สุ%าห้ร�บน%าข้�อมู�ลลงใน Stack

2. Pop Stack เป็!น operation สุ%าห้ร�บน%าข้�อมู�ลออก็จาก็ Stack

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 5: โครงสร้างข้อมูลแบบ  Stack

ตั�วอย่�างการทำ�างานข้องOperation Push และ Pop

Data StructureData StructureDepartment of Computer ScienceDepartment of Computer Science

Page 6: โครงสร้างข้อมูลแบบ  Stack

Implementation Stack

• การ implement Stack ทำ�าได้� 2 ว�ธี ค!อ1. Array Implementation2. Linked List Implementation

•Array Implementation ข้�อตักลง 1) ก็%าห้นดีให้�จ%านวนข้�อมู�ลสุ�งสุ#ดีคื$อ N ที่�'งน�'เพิ่ราะ

ว�าก็ารก็%าห้นดี Array จะตั�องระบ#จ%านวนข้�อมู�ล สุ�งสุ#ดีที่�จะเก็�บลงใน Array

2) ก็%าห้นดีให้�ตั�วแป็ร Top แที่นจ%านวนข้�อมู�ลที่�มู� อย��ใน Stack

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 7: โครงสร้างข้อมูลแบบ  Stack

Flowchart

Department of Computer ScienceDepartment of Computer Science

Page 8: โครงสร้างข้อมูลแบบ  Stack

Program ตั�วอย่�างโปรแกรมูน #เป%น Stack ข้อง

Integer • Pascal

Procedure Push ( X ) ;BeginIf Top=N Then Writeln ( " Stack Overflow " ) ElseBeginTop := Top + 1 ;Stack [ Top ] := X ;End;End;

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 9: โครงสร้างข้อมูลแบบ  Stack

Program ตั�วอย่�างโปรแกรมูน #เป%น Stack ข้อง

Integer• C,C++

Push ( int X )

{if (Top = = N) printf ( " Stack Oerflow " );else{Top = Top + 1 ;Stack [ Top ] = X ;}}

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 10: โครงสร้างข้อมูลแบบ  Stack

Program ตั�วอย่�างโปรแกรมูน #เป%น Stack ข้อง

Integer• C,C++ ฟั'งก(ชั่�*นการ Push

int Push ( int what){

if (Top<MAX-1){ top++; stackdata[top]=what; return 1;}return -1;

}

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 11: โครงสร้างข้อมูลแบบ  Stack

ฟั'งก(ชั่�*นการ Push

• ฟั/งก็0ช่�นน�'เป็!นก็ารน%าข้�อมู�ลเข้�าสุ�� Stack คื$อ ถ้�า top น�อยก็ว�า MAX-1 ซ้2งก็�คื$อ ถ้�า Stack ย�งไมู�เตั�มู ก็�ให้� top++ และเก็�บข้�อมู�ลที่�สุ�งมูาที่างพิ่ารามู+เตัอร0 what ลงไป็ในตั�วแป็ร stackdata ช่�องที่� top ช่�'อย��น� 'นเอง จาก็น�'น return 1 ก็ล�บไป็ย�งจ#ดีที่�เร�ยก็ใช่�เป็!นก็ารบอก็สุถ้านะว�าตัอนน�'ไดี� push เร�ยบร�อยแล�วน�นเอง แตั�ถ้�าเง$อนไข้ if ไมู�เป็!นจร+ง มู�นก็�จะลงมูาที่%าที่� return-1 ดี�งน�'น ฟั/งก็0ช่�นน�'คื$นคื�า -1 แสุดีงว�า stack เตั�มูแล�วน�นเองData StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 12: โครงสร้างข้อมูลแบบ  Stack

.. ตั�วอย่�างการทำ�างานข้อง Push Stack..

• ทำ�าการ Push ข้�อมู�ลตั�อไปน # 9 5 7 2 8 เข้�า เก+บใน Stack

• ด้�ตั�วอย่�าง

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 13: โครงสร้างข้อมูลแบบ  Stack

Pop Stack•Algorithm

1. ตัรวจสุอบว�า Stack ว�าง ? (โดียก็ารตัรวจ สุอบว�า Top เที่�าก็�บ 0)

- ถ้�า Stack ว�าง ให้�แสุดีงข้�อคืวามูว�า "Stack Empty" แล�วเล+ก็งาน- ถ้�า Stack ย�งมู� ข้�อมู�ล ให้�ที่%างานข้�อที่� 2 และ32. ให้�น%าข้�อมู�ลออก็จาก็ Stack3. ให้�ลดีคื�าข้อง Top ลงอ�ก็ 1

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 14: โครงสร้างข้อมูลแบบ  Stack

Flowchart

Page 15: โครงสร้างข้อมูลแบบ  Stack

Program ตั�วอย่�างโปรแกรมูน #เป%น Stack ข้อง

Integer • Pascal

Procedure Pop ( Var X : Integer ) ;BeginIf Top=0 Then Writeln ( " Stack Empty " ) ElseBeginX := Stack [ Top ] ;Top := Top - 1 ;End;End;

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 16: โครงสร้างข้อมูลแบบ  Stack

Program ตั�วอย่�างโปรแกรมูน #เป%น Stack ข้อง

Integer• C,C++

Pop ( int X ){if (Top = = 0) printf ( " Stack Empty " );else{X = Stack [ Top ] ;Top = Top - 1 ;}}

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 17: โครงสร้างข้อมูลแบบ  Stack

Program ตั�วอย่�างโปรแกรมูน #เป%น Stack ข้อง

Integer• C,C++ ฟั'งก(ชั่�*นการ Pop

int pop()

{int r;if (top>-1){

r=stack[top];stack[top]=0;top--;return r;

}return -1;

}Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 18: โครงสร้างข้อมูลแบบ  Stack

ฟั'งก(ชั่�*นการ Pop

ก็ารเอาข้�อมู�ลออก็จาก็ Stack ไดี�น�'น ก็�เพิ่�ยงแคื�คื$นคื�าข้�อมู�ลตั�วที่� top น�'นช่�'อย��ก็ล�บไป็ แตั�ก็�อนที่�จะ Pop ไดี�น�'นจะตั�องดี�ดี�วยว�า top น�'นเป็!น -1 ห้ร$อไมู� ถ้�าเป็!น -1 ก็�แสุดีงว�าตัอนน�'น Stack ว�าง ให้�คื$นคื�า -1 ก็ล�บไป็ แตั�ถ้�า top >-1 แสุดีงว�ามู�มูมู�ข้�อมู�ลอย��ภายใน Stack ดี�งน�'น ให้�คื$นคื�าตั�วที่� top ช่�'อย��ก็ล�บไป็ และลดีคื�า top ลงอ�ก็ 1

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 19: โครงสร้างข้อมูลแบบ  Stack

.. ตั�วอย่�างการทำ�างานข้อง Pop Stack..

• ทำ�าการ Pop ข้�อมู�ลตั�อไปน # 8 2 7 5 9 ออก จาก Stack

• ด้�ตั�วอย่�าง

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 20: โครงสร้างข้อมูลแบบ  Stack

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง Stack ตั�วอย่�างทำ * 1

#include <stdio.h>#include <stdlib.h>#include <conio.h>

#define MAX 10

int stackdata[MAX];int top =-1;

int Push(int what){

if (top<MAX-1){

top++;stackdata[top] = what;return 1;

}return -1;

}

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

ตั�#งชั่!*อไฟัล(ว�า Stack1.c

Page 21: โครงสร้างข้อมูลแบบ  Stack

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง Stack ตั�วอย่�างทำ * 1 (ตั�อ)

int Pop(){

int r;if (top>-1){

r=stackdata[top];stackdata[top]=0;top--;return r;

}return -1;

}

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 22: โครงสร้างข้อมูลแบบ  Stack

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง Stack ตั�วอย่�างทำ * 1 (ตั�อ)

void main(){

clrscr();Push(7);Push(12);Push(23);Push(2);Push(33);Push(10);printf("Pop=%d\n",Pop());printf("Pop=%d\n",Pop());printf("Pop=%d\n",Pop());printf("Pop=%d\n",Pop());

getch();}

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

RunPop = 10Pop = 33Pop = 2Pop = 23

Page 23: โครงสร้างข้อมูลแบบ  Stack

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง Stack ตั�วอย่�างทำ * 2 (ตั�อ)

#include <stdio.h>#include <stdlib.h>#include <conio.h>

#define MAX 10

int stackdata[MAX];int top =-1;

int Push(int what){

if (top<MAX-1){

top++;stackdata[top] = what;return 1;

}return -1;

}

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

ตั�#งชั่!*อไฟัล(ว�า Stack2.c

Page 24: โครงสร้างข้อมูลแบบ  Stack

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง Stack ตั�วอย่�างทำ * 2 (ตั�อ)

int Pop(){

int r;if (top>-1){

r=stackdata[top];stackdata[top]=0;top--;return r;

}return -1;

}

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 25: โครงสร้างข้อมูลแบบ  Stack

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง Stack ตั�วอย่�างทำ * 2 (ตั�อ)

void main(){

clrscr();Push(7);Push(12);Push(23);Push(2);Push(33);Push(10);for (int i=0;i<8;i++){

printf("Pop=%d\n",Pop());}getch();

}

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

RunPop = 10Pop = 33Pop = 2Pop = 23Pop = 12Pop = 7Pop = -1Pop = -1

Page 26: โครงสร้างข้อมูลแบบ  Stack

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง Stack ตั�วอย่�างทำ * 3 (ตั�อ)#include <stdio.h>

#include <stdlib.h>#include <conio.h>

#define MAX 10

int stackdata[MAX];int top =-1;

int Push(int what){

if (top<MAX-1){

top++;stackdata[top] = what;return 1;

}return -1;

}

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

ตั�#งชั่!*อไฟัล(ว�า Stack3.c

Page 27: โครงสร้างข้อมูลแบบ  Stack

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง Stack ตั�วอย่�างทำ * 3 (ตั�อ)

int Pop(){

int r;if (top>-1){

r=stackdata[top];stackdata[top]=0;top--;return r;

}return -1;

}

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 28: โครงสร้างข้อมูลแบบ  Stack

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง Stack ตั�วอย่�างทำ * 3 (ตั�อ)void main()

{clrscr();Push(7);Push(12);Push(23);Push(2);Push(33);Push(10);for (int i=0;i<50;i++){

int result=Pop();if (result==-1){

printf("Stack is empty\n");getch();break;

} printf("Pop=%d\n", result);

getch();}

}

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

RunPop = 10Pop = 33Pop = 2Pop = 23Pop = 12Pop = 7

Stack is empty

Page 29: โครงสร้างข้อมูลแบบ  Stack

การใชั่� สแตัค เพื่!*อแปลร�ปน�พื่จน(ทำางคณ�ตัศาสตัร(

ร�ป็แบบน+พิ่จน0ที่างคืณ+ตัศาสุตัร0• น+พิ่จน0 Infix คื$อ น+พิ่จน0ที่�เคืร$องห้มูาย

ดี%าเน+นก็าร (Operator) อย��ระห้ว�างตั�ว ดี%าเน+นก็าร (Operands) เช่�น A+B-C

• น+พิ่จน0 Prefix คื$อ น+พิ่จน0ที่� เคืร$องห้มูายดี%าเน+นก็าร (Operator)

อย��ห้น�าตั�วดี%าเน+นก็าร (Operands) เช่�น+-AB• น+พิ่จน0 Postfix คื$อ น+พิ่จน0ที่�

เคืร$องห้มูายดี%าเน+นก็าร (Operator) อย��ห้ล�งตั�วดี%าเน+นก็าร (Operands) เช่�น

AC*+

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 30: โครงสร้างข้อมูลแบบ  Stack

ตั�วอย�างน+พิ่จน0คืณ+ตัศาสุตัร0ในร�ป็แบบตั�าง ๆ

• น+พิ่จน0 Infix น+พิ่จน0 Postfix น+พิ่จน0 Prefix

• A+B-C AB+C- - +ABC

• A+B*C-D/E ABC*+DE/- - +A*BC/DE

• A*B+C-D/E AB*C+DE/- - +*ABC/DE

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 31: โครงสร้างข้อมูลแบบ  Stack

การแปลงน�พื่จน( Infix ให้�เป%น Postfix

• เข้�ยนโป็รแก็รมูสุ�งให้�เคืร$องคื%านวณตั�องเข้�ยนน+พิ่จน0ที่�ตั�องก็ารไป็ในตั�วโป็รแก็รมู ซ้2งน+พิ่จน0เห้ล�าน�'เร�ยก็ว�า น+พิ่จน0 Infix คื$อน+พิ่จน0ที่�มู�โอเป็อร0เรเตัอร0 (Operator) อย��ระห้ว�างโอเป็อร0แรนดี0 (Operand) ที่�'งสุอง เช่�น A+B เคืร$องห้มูาย

+ เป็!นโอเป็อร0เรเตัอร0ระห้ว�างโอเป็อร0แรนดี0 A และ B ซ้2งเห้�นว�าเป็!นน+พิ่จน0ที่�มูน#ษย0คื#�นเคืย ข้�อเสุ�ยข้องน+พิ่จน0 infix ที่�ที่ที่%าให้�คือมูไพิ่เลอร0ย#�งยาก็ คื$อล%าดี�บคืวามูสุ%าคื�ญข้องโอเป็อร0เรเตัอร0 (Precedence) ที่�ตั�างก็�น เช่�นเคืร$องห้มูายยก็ก็%าล�ง (ใช่� ^ ในก็ารเข้�ยนโป็รแก็รมู ) มู�คืวามูสุ%าคื�ญมูาก็ก็ว�าเคืร$องห้มูายคื�ณ และห้าร และเคืร$องห้มูายคื�ณและห้ารมู�คืวามูสุ%าคื�ญมูาก็ก็ว�าเคืร$องห้มูายบวก็และลบ

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 32: โครงสร้างข้อมูลแบบ  Stack

การแปลงน�พื่จน( Infix ให้�เป%น Postfix

• เมู$อก็ารป็ระมูวลน+พิ่จน0 infix เป็!นไป็ดี�วยคืวามูยาก็ที่�ก็ารคื%านวณไมู�เป็!นไป็ตัามูล%าดี�บข้องเคืร$องห้มูายโอเป็อร0เรเตัอร0ที่�มู�ก็�อนห้ล�ง คือมูไพิ่เลอร0จ2งแป็ลงน+พิ่จน0 infix ให้�เป็!น postfix เสุ�ยก็�อน

• น+พิ่จน0 Postfix ก็�คื$อน+พิ่จน0ที่�มู�โอเป็อเรเตัอร0อย��ห้ล�งโอเป็อร0แรนดี0ที่�'งสุองข้องมู�น เช่�น

AB+ห้มูายถ้2ง A+B AB- ห้มูายถ้2ง A-B AB* ห้มูายถ้2ง A*B

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 33: โครงสร้างข้อมูลแบบ  Stack

การแปลงน�พื่จน( Infix ให้�เป%น Postfix

• Operator คื$อเคืร$องห้มูายก็ระที่%า - *+ / ^

• Operand คื$อตั�วแป็รตั�าง ๆ A,B,C,D,E เช่�น A+B*C,(A*B)-C

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 34: โครงสร้างข้อมูลแบบ  Stack

ล�าด้�บความูส�าค�ญ Operator

1. เคืร$องห้มูายยก็ก็%าล�ง ^ 2. เคืร$องห้มูายคื�ณก็�บห้าร * ,/ 3. เคืร$องห้มูายบวก็ก็�บลบ +,- 4. เคืร$องห้มูายวงเล�บ () ก็ระที่%าก็�อนเช่�น A+

(B*C) 5. เคืร$องห้มูายระดี�บเดี�ยวก็�นไมู�มู�วงเล�บให้�ที่%าจาก็

ซ้�ายไป็ข้วา เช่�น A+B+C  

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 35: โครงสร้างข้อมูลแบบ  Stack

ตั�วอย�างน+พิ่จน0ที่างคืณ+ตัศาสุตัร0และล%าดี�บก็ารคื%านวณ

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 36: โครงสร้างข้อมูลแบบ  Stack

อ�ลกอร�ทำ2มูการแปลงน�พื่จน( Infix เป%น น�พื่จน( Postfix

• เราสุามูารถ้แป็ลงน+พิ่จน0 Infix ให้�เป็!น Postfix ไดี�โดียอาศ�ยสุแตัคืที่�มู�คื#ณสุมูบ�ตั+ก็ารเข้�าห้ล�งออก็

ก็�อนห้ร$อ LIFO โดียมู�อ�ลก็อร+ที่2มูในก็ารแป็ลง น+พิ่จน0 ดี�งน�'

1. ถ้�าข้�อมู�ลเข้�า (input) เป็!นตั�วถ้�ก็ดี%าเน+นก็าร(operand) ให้�น%าออก็ไป็เป็!นผลล�พิ่ธ์0 (output)

2. ถ้�าข้�อมู�ลเข้�าเป็!นตั�วดี%าเน+นก็าร (operator) ให้�ดี%าเน+นก็ารดี�งน�'2.1 ถ้�าสุแตัคืว�าง ให้� push operator ลงในสุแตัคื

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 37: โครงสร้างข้อมูลแบบ  Stack

อ�ลกอร�ทำ2มูการแปลงน�พื่จน( Infix เป%น น�พื่จน( Postfix

• 2.2 ถ้�าสุแตัคืไมู�ว�าง ให้�เป็ร�ยบเที่�ยบ operator ที่�เข้�ามูาก็�บoperator ที่�อย��ในตั%าแห้น�ง TOP ข้องสุแตัคื2.2.1 ถ้�า operator ที่�เข้�ามูามู�คืวามูสุ%าคื�ญมูาก็ก็ว�าoperator ที่�ตั%าแห้น�ง TOP ข้องสุแตัคืให้� push ลงสุแตัคื2.2.2 ถ้�า operator ที่�เข้�ามูามู�คืวามูสุ%าคื�ญน�อยก็ว�าห้ร$อ

เที่�าก็�บ operator ที่�อย��ในตั%าแห้น�ง TOP ข้องสุแตัคื ให้�pop สุแตัคืออก็ไป็เป็!นผลล�พิ่ธ์0 แล�วที่%าก็ารเป็ร�ยบเที่�ยบoperator ที่�เข้�ามูาก็�บ operator ที่�ตั%าแห้น�ง TOP ตั�อไป็

จะห้ย#ดีจนก็ว�า operator ที่�เข้�ามูาจะมู�คืวามูสุ%าคื�ญมูาก็ก็ว�าoperator ที่�ตั%าแห้น�ง TOP ข้องสุแตัคื แล�วจ2ง push operator ที่�เข้�ามูาน�'นลงสุแตัคื

Page 38: โครงสร้างข้อมูลแบบ  Stack

อ�ลกอร�ทำ2มูการแปลงน�พื่จน( Infix เป%น น�พื่จน( Postfix

• 3. ถ้�าข้�อมู�ลเข้�าเป็!นวงเล�บเป็:ดี ให้� push ลงสุแตัคื

4. ถ้�าข้�อมู�ลเข้�าเป็!นวงเล�บป็:ดี ให้� pop ข้�อมู�ล ออก็จาก็สุแตัคืไป็เป็!นผลล�พิ่ธ์0จนก็ว�าจะถ้2งวงเล�บ

เป็:ดี จาก็น�'นที่+'งวงเล�บเป็:ดีและป็:ดีที่+'งไป็

5. ถ้�าข้�อมู�ลเข้�าห้มูดี ให้� pop ข้�อมู�ลออก็จาก็ สุแตัคืไป็เป็!นผลล�พิ่ธ์0จนก็ว�าสุแตัคืจะว�าง

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 39: โครงสร้างข้อมูลแบบ  Stack

ตั�วอย�างก็ารแป็ลงน+พิ่จน0 Infix เป็!น น+พิ่จน0 Postfix

• น�พื่จน( A + B * C

Page 40: โครงสร้างข้อมูลแบบ  Stack

น�พื่จน( (A * B) + (C / D)

Page 41: โครงสร้างข้อมูลแบบ  Stack

น�พื่จน( A / B + (C – D)

Page 43: โครงสร้างข้อมูลแบบ  Stack

ข้�#นตัอนการค�านวณจากน�พื่จน(Postfix

ในก็ารคื%านวณคื�า Postfix ที่�แป็ลงมูาแล�วตั�วแป็ลภาษาจะที่%า

ก็ารคื%านวณโดียใช่�โคืรงสุร�างสุแตัก็ช่�วยอ�ก็เช่�น ก็�น

ข้�'นตัอนในก็ารคื%านวณ1. อ�านตั�วอ�ก็ษรในน+พิ่จน0 Postfix จาก็ซ้�าย ไป็ข้วาที่�ละ

ตั�วอ�ก็ษร2. ถ้�าเป็!นตั�วถ้�ก็ดี%าเน+นก็าร ให้�ที่%าก็ารpush ตั�วถ้�ก็ดี%าเน+นก็าร

น�'นลงในสุแตัก็ แล�วก็ล�บไป็อ�านอ�ก็ษรตั�วให้มู�เข้�ามูา3. ถ้�าเป็!นตั�วดี%าเน+นก็าร ให้�ที่%าก็าร pop

คื�าจาก็สุแตัก็ 2 คื�า โดีย ตั�วแรก็เป็!นตั�ว ถ้�ก็ดี%าเน+นก็ารตั�วที่� 2 และตั�วที่� 1 ตัามู

ล%าดี�บ

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 44: โครงสร้างข้อมูลแบบ  Stack

4. ที่%าก็ารคื%านวณ ตั�วถ้�ก็ดี%าเน+นก็ารตั�วที่�1 ดี�วยตั�วถ้�ก็ ดี%าเน+นก็ารตั�วที่� 2 โดียใช่�

ตั�วดี%าเน+นก็ารในข้�อ 35. ที่%าก็าร push ผลล�พิ่ธ์0ที่�ไดี�จาก็ก็าร

คื%านวณในข้�อ 4 ลงสุแตัก็6. ถ้�าตั�วอ�ก็ษรในน+พิ่จน0 Postfix ย�งอ�านไมู�ห้มูดีให้�ก็ล�บไป็ที่%า ข้�อ 1 ให้มู�

ข้�#นตัอนการค�านวณจากน�พื่จน(Postfix

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 45: โครงสร้างข้อมูลแบบ  Stack

ตั�วอย่�าง ข้�'นตัอนก็ารคื%านวณจาก็น+พิ่จน0Postfix ABC+D-*E/

1. ABC+D-*E/

A

Push A

2. ABC+D-*E/

Push B

AB

ข้�#นตัอนการค�านวณจากน�พื่จน(Postfix

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 46: โครงสร้างข้อมูลแบบ  Stack

3. ABC+D-*E/

A

Push C

4. ABC+D-*E/

1. Pop C2. Pop B3. B+C4. Push B+C A

B+CBC

ข้�#นตัอนการค�านวณจากน�พื่จน(Postfix

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 47: โครงสร้างข้อมูลแบบ  Stack

5. ABC+D-*E/

A

Push D

6. ABC+D-*E/

1. Pop D2. Pop B+C3. B+C-D4. Push B+C-D A

B+C-DB+CD

ข้�#นตัอนการค�านวณจากน�พื่จน(Postfix

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 48: โครงสร้างข้อมูลแบบ  Stack

7. ABC+D-*E/

A*B+C-D

8. ABC+D-*E/

Push E

A*B+C-DE

1. Pop B+C-D2. Pop A3. A*B+C-D4. Push A*B+C-D

ข้�#นตัอนการค�านวณจากน�พื่จน(Postfix

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 49: โครงสร้างข้อมูลแบบ  Stack

9. ABC+D-*E/

A*B+C-D/E

1. Pop E2. Pop A*B+C-D3. A*B+C-D/E4. Push A*B+C-D/E

10. คื�าสุ#ดีที่�ายที่�อย��ในสุแตัก็คื$อคื%าตัอบที่�ตั�องก็าร

ข้�#นตัอนการค�านวณจากน�พื่จน(Postfix

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 50: โครงสร้างข้อมูลแบบ  Stack

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Page 51: โครงสร้างข้อมูลแบบ  Stack

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science