สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1)...

40
สแต็ก (Stacks) 1 โครงสร้างข้อมูล

Transcript of สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1)...

Page 1: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

สแตก (Stacks)

1 โครงสรางขอมล

Page 2: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

โครงสรางขอมลแบบสแตก สแตก (Stacks) เปนลสตแบบเชงเสน (Linear Lists)

โครงสรางขอมลทจดเกบขอมลแบบเรยงล าดบตอเนอง

การเพมขอมลลงในสแตก หรอการน าขอมลออกจากสแตก จะกระท าทจดปลายดานใดดานหนง (เขาออกไดทางเดยว) เรยกวา Top ของสแตก

สแตกเปนโครงสรางขอมลแบบมาทหลงแตออกกอน LIFO (Last In-First Out)

โครงสรางขอมล 2

Page 3: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การด าเนนงานพนฐานของสแตก (Basic Stack Operations) การด าเนนงานเกยวกบโครงสรางขอมลแบบสแตก ประกอบดวยฟงกชนดวยกน

ฟงกชน Push

ฟงกชน Pop

ฟงกชน Stack Top

โครงสรางขอมล 3

Page 4: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

ฟงกชน Push (1) การเพมขอมลลงในสแตก จะใชฟงกชน Push

ท าหนาทเพมรายการทต าแหนงบนสดของสแตก

รายการทเพมต าแหนงเขาไปหลงสดจะอยต าแหนงบนสดของสแตก

ปญหาของการ Push กคอ ตองมความมนใจวาภายในสแตกนนมพนทวางพอทจะบรรจขอมลลงไปได

สแตกเตมหรอพนทวางไมเพยงพอ ท าใหเกดสถานะโอเวอรโฟลว (Overflow State) ท าใหไมสามารถใสขอมลใหมเขาไปในสแตกได

โครงสรางขอมล 4

Page 5: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

ฟงกชน Push (2)

โครงสรางขอมล 5

การ Push ขอมลลงในสแตก

Push

Top

Top

Data

Stack Stack

Operation

Page 6: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

ฟงกชน Pop (1) ฟงกชน Pop เปนฟงกชนคนคาขอมลทอยบนสดของสแตกสงคนใหกบผใช

พรอมทงลบขอมลรายการนนออกไป

สงผลใหขอมลรายการถดไปมาอยในสถานะบนสดอกครง

เมอรายการสดทายในสแตกไดถกน าออกไปหมด สแตกจะอยในสถานะวาง (Empty State)

หากเรยกใชฟงกชน Pop บนสแตกทวางเปลา จะท าใหเกดสถานะอนเดอรโฟลว (Underflow State)

เมอตองการ Pop ขอมลออกจากสแตก จงจ าเปนตองตรวจสอบกอนวาสแตกนนวางหรอไม

โครงสรางขอมล 6

Page 7: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

ฟงกชน Pop (2)

โครงสรางขอมล 7

การ Pop ขอมลออกจากสแตก

Pop Top

Top

Data

Stack Stack

Operation

Page 8: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

ฟงกชน Stack Top (1) ฟงกชนนจะมความคลายคลงกบฟงกชน Pop ทคนคาขอมลดวยการคดลอก

ขอมลบนสดของสแตกสงคนใหกบผใช

แตกตางกนท ฟงกชน Stack Top จะคนคาขอมลไปยงผใชงานเทานน โดยไมมการลบขอมลออกจากสแตก

หนาทของฟงกชน Stack Top กคอการอานขอมลบนสแตกทอยล าดบบนสด

ดวยการอานขอมลจากสแตกทอยในล าดบบนสดสงคนกลบไปยงผใชงานตอไป

โครงสรางขอมล 8

Page 9: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

ฟงกชน Stack Top (2)

โครงสรางขอมล 9

การอานขอมลดวย Stack Top

Stack Top Top Top

Data

Stack Stack

Operation

Page 10: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

ตวอยางฟงกชนด าเนนงานพนฐานของสแตก (1)

โครงสรางขอมล 10

Step 1

green

Push

Top

Stack Stack

Operation

green

Page 11: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

ตวอยางฟงกชนด าเนนงานพนฐานของสแตก (2)

โครงสรางขอมล 11

Step 2

blue

Push

Top

Stack Stack

Operation

green green

blue Top

Page 12: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

ตวอยางฟงกชนด าเนนงานพนฐานของสแตก (3)

โครงสรางขอมล 12

Step 3

blue

Pop

Top

Stack Stack

Operation

green green

Top blue

Page 13: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

ตวอยางฟงกชนด าเนนงานพนฐานของสแตก (4)

โครงสรางขอมล 13

Step 4

red

Push

Top

Stack Stack

Operation

green green

red Top

Page 14: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

ตวอยางฟงกชนด าเนนงานพนฐานของสแตก (5)

โครงสรางขอมล 14

Step 5

red

Stack Top

Top

Stack Stack

Operation

green green

red red Top

Page 15: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

ตวอยางฟงกชนด าเนนงานพนฐานของสแตก (6)

โครงสรางขอมล 15

Step 6

red

Pop

Top

Stack Stack

Operation

green green

red Top

Page 16: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

ตวอยางฟงกชนด าเนนงานพนฐานของสแตก (7)

โครงสรางขอมล 16

Step 7

green

Pop

Stack Stack

Operation

green Top

Page 17: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การสรางสแตก (Stack Implementtation) สแตกเปนโครงสรางขอมลทภาษาคอมพวเตอรไมไดมมาใหเหมอนกบอารเรย

สามารถสรางสแตกดวยการแทนทขอมลสแตกได 2 วธ คอ

การสรางสแตกดวยอารเรย

การสรางสแตกดวยลงกลสต

โครงสรางขอมล 17

Page 18: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การสรางสแตกดวยอารเรย (1) เปนการจดสรรพนทหนวยความจ าแบบสเตตก (Static) ซงตองมการก าหนดขนาดของ

สแตกเพอใชงานไวลวงหนาวาตองการขนาดเทาไหร

กท าการจดสรรเนอทภายในหนวยความจ าแบบคงทตายตว

โครงสรางอารเรยทน ามาแทนทขอมลของสแตกจงตอง.... จดเกบเปนขอมลชนดเดยวกน

โครงสรางขอมล 18

หลกการของสแตก

Top

2 3 5 StackAry Count StackMax StackAry

[0] [1] [2] [3] [4] การแทนสแตกดวยอารเรยในเชงกายภาพ

Page 19: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การสรางสแตกดวยอารเรย (2) ขอเสยการสรางสแตกดวยอารเรย

ตองมการจดสรรพนทหนวยความจ าทแนนอนไวลวงหนา

กรณทมการเพมขอมลลงในสแตกมากเกนกวาทก าหนดไวกจะสงผลใหสแตกเตม แตกสามารถแกไขปญหาไดดวยการจดสรรเนอทภายในหนวยความจ าจ านวนมากๆ แตกจะท าใหทวความสนเปลองยงขน

กรณทมขอมลจ านวนนอยหรอไมมขอมลในสแตกเลย หมายความวาตองเสยพนทหนวยความจ าไปเลย

โครงสรางขอมล 19

Page 20: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การสรางสแตกดวยลงกลสต (1) ลงกลสตจะจดสรรหนวยความจ าแบบไดนามก (Dynamic)

หนวยความจ าจะถกจดสรรเมอมการใชงานจรงเทานน

สามารถเกบขอมลตางชนดกนได

การสรางสแตกดวยลงกลสต สแตกจะไมมวนเตมตอเมอยงมเนอทเพยงพอตอการจดสรรไดอย

สวนประกอบส าคญของลงกลสต - - > โครงสรางสองสวนทมความแตกตางกน คอ สวนหว (Head) และสวนขอมล (Data Node)

โครงสรางขอมล 20

Page 21: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การสรางสแตกดวยลงกลสต (2)

โครงสรางขอมล 21

หลกการของสแตก

Top

5

Head

count top

การแทนสแตกดวยลงกลสตในเชงกายภาพ

Data Nodes

Page 22: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

สวนหวของสแตก (Stack Head) สวนหวของสแตกจะประกอบดวย 2 แอตตรบวตดวยกนคอ

พอยนเตอร (Top Pointer) ทชไปยงโหนดบนสด

ตวนบ (Count) แสดงจ านวนสมาชกในสแตก

โครงสรางขอมล 22

count top

stack count <integer> top <node pointer> end stack

Page 23: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

สวนขอมลของ(Stack data Node) สวนของขอมลจะประกอบดวย

ขอมล

พอยนเตอรทใชส าหรบเชอมโยงไปยงสวนขอมลตวถดไป

โครงสรางขอมล 23

data link

node data <dataType> link <node pointer> end node

Page 24: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การประยกตใชงานสแตก (Stack Application) (1) การเรยงล าดบขอมลแบบยอนกลบ (Revering Data)

คอการจดเรยงล าดบขอมลใหม

โครงสรางขอมล 24

4 3 2 1

1 2

3 4

Stack 1

Stack 2

Pop

Page 25: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การประยกตใชงานสแตก (Stack Application) (2) การแตกขอมลออกเปนสวนๆ (Parsing)

เปนการแตกขอมลออกเปนสวนๆ ใหเปนอสระตอกน เพอสงไปประมวลผล

การแตกขอมลออกเปนสวนยงสามารถน าไปใชกบการตรวจสอบการจบคของเครองหมายวงเลบในนพจนคณตศาสตร

โครงสรางขอมล 25

((A + B) / C

?

(A + B) / C)

?

Opening parenthesis not matched Closing parenthesis not matched

Page 26: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การประยกตใชงานสแตก (Stack Application) (3) การยอนรอย (Backtracking Steps)

เปนการยอนรอยเพอไปสถานะกอนหนา รวมถงการคนหาเสนทางการเดนเพอไปยงเปาหมายปลายทาง (Goal Seeking)

โครงสรางขอมล 26

18

Start node

1 2 3

4 5

6 7

8

9 10 11

12 13 14 15 16

17

The goal

Page 27: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การประยกตใชงานสแตก (Stack Application) (4) การหนวงเวลา (Postponement)

เปนการหนวงเวลาของขอมลไวชวขณะหนง เพอรอการประมวลผลในชวงเวลาทเหมาะสม

น าไปใชกบการแปลงนพจน Infix มาเปน Postpix

โครงสรางขอมล 27

A + X1 * 2

Operator

Operand

Operator คอ เครองหมายการค านวณตางๆ - > + - * /

Operand เปนตวถกด าเนนการ -> เปนตวแปรหรอคาคงท

Page 28: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การประยกตใชงานสแตก (Stack Application) (5) นพจนทางคณตศาสตรสามารถน าเสนอใหแตกตางกนได 3 รปแบบ

นพจน Infix - > นพจนโดยทวไปมกใชกบการค านวณสตรตวเลขตางๆ โดยโอเปอเรเตอรจะอยระหวางตวโอเปอแรนด

นพจน Postfix - > นพจนในรปแบบทโอเปอเรเตอรจะอยขางหลงตวโอเปอแรนด

นพจน Prefix - > นพจนในรปแบบทโอเปอเรเตอรจะอยขางหนาตวโอเปอแรนด

โครงสรางขอมล 28

Prefix : +AB Infix : A+B Postfix : AB+

Page 29: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การแปลงนพจน Infix มาเปน Postfix ดวยมอ (Manual Transformation) (1) กฎเกณฑการแปลงนพจน Infix มาเปน Postfix ดวยมอ ดงขนตอนตอไปน

1. ใหใสเครองหมายวงเลบใหกบทกๆ นพจน ดวยการค านงถงล าดบการค านวณ (คณและหารตองมากอนเครองหมายบวกและลบ)

2. ท าการเปลยนสญลกษณ Infix ในแตละวงเลบใหมาเปนสญลกษณแบบ Posfix โดยใหเรมตนจากนพจนทอยวงเลบในสดกอน จากนนกด าเนนการแปลงใหเปนนพจน Postfix ดวยการยายโอเปอเรเตอรตรงต าแหนงวงเลบนนไปยงต าแหนงวงเลบปดของคนนๆ

3. ถอดเครองหมายวงเลบทงออกไปใหหมด

โครงสรางขอมล 29

Page 30: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การแปลงนพจน Infix มาเปน Postfix ดวยมอ (Manual Transformation) (2) Ex จงแปลงนพจน A + B * C มาเปนนพจน Postfix ดวยมอ

โครงสรางขอมล 30

นพจน Infix ทใหมา A + B * C

ข นตอนท 1 ใสวงเลบใหท งหมดตามล าดบความส าคญ

(A + (B * C))

ข นตอนท 2 พจารณานพจนทอยในวงเลบในสด โดยใหยายเครองหมาย *

ไปไวขางหลง C

(A + (B C *))

จากนนใหยายโอเปอเรเตอร + ซงอยทต าแหนงวงเลบเปดภายนอก

ไปยงต าแหนงวงเลบปดภายนอกของคตวเอง

(A(B C*) + )

ข นตอนท 3 ถอดเครองหมายวงเลบทงออกใหหมด

A B C * +

Page 31: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การแปลงนพจน Infix มาเปน Postfix ดวยมอ (Manual Transformation) (3) Ex จงแปลงนพจน 5 * 6 - 10 มาเปนนพจน Postfix ดวยมอ

โครงสรางขอมล 31

5 * 6 – 10 = ((5 * 6) - 10)

= ((5 6 *) - 10)

= ((5 6 *) 10 -)

= 5 6 * 10 -

Page 32: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การแปลงนพจน Infix มาเปน Postfix ดวยมอ (Manual Transformation) (4) การค านวณหาผลลพธนพจน Postfix ในสแตก

โครงสรางขอมล 32

Page 33: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การแปลงนพจน Infix มาเปน Postfix ดวยมอ (Manual Transformation) (5) การค านวณหาผลลพธนพจน Postfix ในสแตก

โครงสรางขอมล 33

Page 34: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

อลกอรทมส าหรบแปลงนพจน Infix มาเปนนพจน Postfix (Algorithmic Transformation) (1)

อลกอรทมการแปลงนพจน Infix มาเปน Postfix

1. ถาขอมลเขาเปนโอเปอแรนด ใหเอาตพตไป Postfix

2. ถาขอมลเขาเปนโอเปอเรเตอร ถาสแตกวาง ให Push ลงในสแตก ถาภายในสแตกมขอมลอย ใหท าการเปรยบเทยบดงน ถาโอเปอเรเตอรทเขามามความส าคญนอยกวา หรอเทยบเทากบโอเปอเรเตอรทอย

สวนบนของสแตกใหด าเนนการ Pop สแตกออกไปท Postfix โดยท าการเปรยบเทยบกบโอเปอเรเตอรทมอยในสแตกไปเรอยๆ จนกระทงโอเปอเรเตอรทอนพตมามล าดบความส าคญมากกวาโอเปอเรเตอรในสแตก จากนนให Push โอเปอเรเตอรทอนพตเขามาลงในสแตก

ถาโอเปอเรเตอรทอนพตเขามามล าดบความส าคญมากกวาโอเปอเรเตอรทอยสวนบนของสแตกให Push โอเปอเรเตอรนนลงในสแตก

โครงสรางขอมล 34

Page 35: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

อลกอรทมส าหรบแปลงนพจน Infix มาเปนนพจน Postfix (Algorithmic Transformation) (2)

อลกอรทมการแปลงนพจน Infix มาเปน Postfix

3. ถาขอมลเขาเปนเครองหมายวงเลบ ใหด าเนนการ Push ลงในสแตก

4. ถาขอมลเขาเปนเครองหมายวงเลบปด ใหด าเนนการ Pop สแตกไปยง Postfix จนกระทงพบเครองหมายวงเลบเปด จากนนใหน าเครองหมายวงเลบทงสองทงไป

5. หากด าเนนการจนเสรจสนแลวยงคงมขอมลอยในสแตก ใหด าเนนการ Pop สแตกทเหลออยท งหมดไปท Postfix

โครงสรางขอมล 35

Page 36: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

โครงสรางขอมล 36

A A

Infix Stack Postfix

(a)

+ A (b) + B A B (c)

* A B (d)

C A B C (e)

- A B C * + (f)

D A B C * + D (g)

/ A B C * + D (h)

E A B C * + D E (i)

A B C * + D E / - (j)

+

+ *

+ *

-

-

- /

- /

Page 37: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

อลกอรทมส าหรบแปลงนพจน Infix มาเปนนพจน Postfix (Algorithmic Transformation) (4)

โครงสรางขอมล 37

ล าดบความส าคญ (Priority) โอเปอเรเตอร

2 1 0

* / + - (

Page 38: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

อลกอรทมส าหรบแปลงนพจน Infix มาเปนนพจน Postfix (Algorithmic Transformation) (4) Ex จงแปลงนพจน A * B – (C + D) + E ใหเปนนพจน Postfix

โครงสรางขอมล 38

Input (Infix) Operator Stack Output String (Postfix)

A A

* * A

B * A B

- - A B *

( - ( A B *

C - ( A B * C

+ - ( + A B * C

D - ( + A B * C D

) - A B * C D +

+ + A B * C D + -

E + A B * C D + - E

A B * C D + - E +

Page 39: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

การหาผลลพธจากนพจน Postfix (Evaluating Postfix Expressions) ก าหนดให A B C + *

โดยท A = 2 B = 4 C = 6

โครงสรางขอมล 39

2 4 6 + *

Postfix Stack

(a)

4 6 + * (b) 2

6 + * (c)

+ * (d)

* (e)

(f)

2

2

4

4 6

10 2

20

4+6=10

2*10=20

Page 40: สแต็ก (Stacks) · 2011. 11. 1. · ฟังก์ชัน Push (1) การเพิ่มข้อมูลลงในสแต็ก จะใชฟ้งัก์ชนั

อางอง โอภาส เอยมสรวงศ

โครงสรางขอมล (Data Structures) เพอการออกแบบโปรแกรมคอมพวเตอร.—กรงเทพฯ : ซเอดยเคชน, 2549.

โครงสรางขอมล บทท 7 กราฟ 40