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

Preview:

DESCRIPTION

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

Citation preview

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

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

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

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

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

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

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

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

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

Operation ข้อง Stack

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

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

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

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

Data StructureData StructureDepartment of Computer ScienceDepartment of Computer Science

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

Flowchart

Department of Computer ScienceDepartment of Computer Science

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

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

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

ฟั'งก(ชั่�*นการ 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

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

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

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

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

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

Flowchart

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

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

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

ฟั'งก(ชั่�*นการ 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

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

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

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

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง 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

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง 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

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง 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

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง 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

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง 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

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง 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

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง 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

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง 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

ตั�วอย่�างโปรแกรมูแสด้งการทำ�างานข้อง 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

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

ร�ป็แบบน+พิ่จน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

ตั�วอย�างน+พิ่จน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

การแปลงน�พื่จน( 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

การแปลงน�พื่จน( 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

การแปลงน�พื่จน( 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

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

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

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

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

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

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

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

อ�ลกอร�ทำ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

อ�ลกอร�ทำ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 ที่�เข้�ามูาน�'นลงสุแตัคื

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

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

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

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

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

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

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

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

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

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

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

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

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

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

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

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

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

ล%าดี�บ

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

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

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

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

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

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

ตั�วอย่�าง ข้�'นตัอนก็ารคื%านวณจาก็น+พิ่จน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

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

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

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

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

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science

Data StructureData Structure Department of Computer ScienceDepartment of Computer Science