Tải bản đầy đủ (.pptx) (37 trang)

Lecture 09 stacks tài liệu Kỹ thuật Lập trình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (201.43 KB, 37 trang )

Lecture 9 – Ngăn xếp (Stacks)
9.1. Khái niệm về stacks
9.2. Các thao tác chính của stacks
9.3. Các thao tác khác của stacks
9.4. Ví dụ về ứng dụng của stack
9.4.1. Đảo mảng
9.4.2. Đảo chuỗi
9.4.3. Chuyển đổi hệ cơ số
9.4.4. Bracket Matching
9.4.5. Balancing Act
9.5. Bài tập thực hành
8/28/14
1
Lecture 9 – Ngăn xếp (Stacks)
9.1. Khái niệm về stacks
9.2. Các thao tác chính của stacks
9.3. Các thao tác khác của stacks
9.4. Ví dụ về ứng dụng của stack
9.4.1. Đảo mảng
9.4.2. Đảo chuỗi
9.4.3. Chuyển đổi hệ cơ số
9.4.4. Bracket Matching
9.4.5. Balancing Act
9.5. Bài tập thực hành
8/28/14
2
9.1. Khái niệm về stacks

 !"
#$%&'


(!)*+pushed,-.

(%/+popped,0123 -.

8/28/14
3

4!%5678.%Last In First Out
(LIFO), )*  

!%5- !"
9:
;<=% >#;
);?
9.1. Khái niệm về stacks
8/28/14
4

Các thao tác cơ bản trên stack:

Push@A3=0)*-.

Pop@B/-.3=0

Peek@CD-.;%E
9.1. Khái niệm về stacks
8/28/14
5
9.1. Khái niệm về stacks


Một số ứng dụng của stack:

F1trực @ếp@

F1G7H.%*6 6 01I

J * KLMN# OPD'% *

J * *&8*)Q78*#R*'% *

F1gián @ếp@

 ST%K7G '*H*##

93=. ST%K#
8/28/14
6
9.1. Khái niệm về stacks

Định nghĩa stack:

9UCVWXM@V:3=0:.+"8,

WDJ3D@(T%K*

Thao tác chính:

Y

Y*3


YDD

Thao tác khác:

WM3

WZ%%

9DM3
8/28/14
7
9.1. Khái niệm về stacks

Thực thi và giới hạn của stack.

Thực thi:

[I%:\*]

(\01:)%^+,]

_*#3;&3%^+`,

Giới hạn:

(a:.stack'b \G+"8,]

4stackO=\PUSH'3=0)*stack4stack _*#POP*c8
_

8/28/14
8
Lecture 9 – Ngăn xếp (Stacks)
9.1. Khái niệm về stacks
9.2. Các thao tác chính của stacks
9.3. Các thao tác khác của stacks
9.4. Ví dụ về ứng dụng của stack
9.4.1. Đảo mảng
9.4.2. Đảo chuỗi
9.4.3. Chuyển đổi hệ cơ số
9.4.4. Bracket Matching
9.4.5. Balancing Act
9.5. Bài tập thực hành
8/28/14
9
9.2. Các thao tác chính của stacks

J ba*stack@
dDeD9UCVWXM`ff

01stack%7gT%K**=bT%K*@
h9UCVWXMi]

"* >P#b-.stack*j686"3=08=2!
.stack%:3=O *stack@
hfikf]
8/28/14
10

Thêm một phần tử vào stack:

Y+DlWD@WDJ3D,

Chức năng: J!3=0)*-.
V

Điều kiện thực hiện: VO'&*
)=

Kết quả: 4!\DlWDm
-.V
3+hi)%D,
n
o+hfip9UCVWXMq`,n
hfikhfir`]
hhfiik)%D]
 D `]
s
D%D D f]
s
9.2. Các thao tác chính của stacks
8/28/14
11

Thêm một phần tử vào stack:
Y+DlWD@WDJ3D,

Chức năng: J!3=0)*-.
V

Điều kiện thực hiện: VO'&*

)=

Kết quả: 4!\DlWDm
-.V
)*3+hi)%D,
n
o+hfip9UCVWXMq`,n
hfikhfir`]
hhfiik)%D]
s
D%Dn
3 t+u(*DD)* VJU(vu,]
D+,]
s
s
9.2. Các thao tác chính của stacks
8/28/14
12

Thao tác lấy ra 1 phần tử:
Y*3+D@WDJ3D,

Chức năng: B3=0-.Stack)
 8%&*%wI

Điều kiện: VO'&*)\
_

Kết quả: Y=0-.Stack' 8
%&*%wI):3=0 *Stack

8`
3*3+hix)%D,
n
o+hfiyf,n
x)%Dkhhfii]
hfikhfiq`]
D `]
s
D%D D f]
s
#I@
)%DD ]
D k3*3+z)%D,]
Wo+D kkf,3 t+{%_|,]
M%D3 t+{ b@}|)%D,
9.2. Các thao tác chính của stacks
8/28/14
13

Thao tác lấy ra 1 phần tử:
Y*3+D@WDJ3D,

Chức năng: B3=0-.Stack)
 8%&*%wI

Điều kiện: VO'&*)\
_

Kết quả: Y=0-.Stack' 8
%&*%wI):3=0 *Stack

8`
3*3+hi,
n
)%D]
o+hfiyf,n
)%Dkhhfii]
hfikhfiq`]
s
D%Dn
3 t+uVJU( *vu,]
)%Dkq<?~•€]
s
 D )%D]
s
9.2. Các thao tác chính của stacks
8/28/14
14

Xem giá trị ở đỉnh stack:
YDD+D@WDJ3D,

Chức năng: B# b&-.V
\%*&3=0-.V

Điều kiện: VO'&*)\
_

Kết quả: [# b&-.V' 8)•
*%wIV\G
3DD+hixD ,

n
o+hfiyf,n
xD k`]
 D hhfii]
s
D%Dn
xD kf]
 D f]
s
s
9.2. Các thao tác chính của stacks
8/28/14
15

Xem giá trị ở đỉnh stack:
YDD+D@WDJ3D,

Chức năng: B# b&-.V
\%*&3=0-.V

Điều kiện: VO'&*)\
_

Kết quả: [# b&-.V' 8)•
*%wIV\G
3DD+hi,
n
o+hfiyf,
 D hhfii]
D%Dn

3 t+uVJU( *vu,]
 D q<?~•€]
s
s
9.2. Các thao tác chính của stacks
8/28/14
16
Lecture 9 – Ngăn xếp (Stacks)
9.1. Khái niệm về stacks
9.2. Các thao tác chính của stacks
9.3. Các thao tác khác của stacks
9.4. Ví dụ về ứng dụng của stack
9.4.1. Đảo mảng
9.4.2. Đảo chuỗi
9.4.3. Chuyển đổi hệ cơ số
9.4.4. Bracket Matching
9.4.5. Balancing Act
9.5. Bài tập thực hành
8/28/14
17
9.3. Các thao tác khác của stacks

J*#isEmpty@( PDStack _\E

J*#isFull@( PDStackO=E

J*#makeEmpty@B _Stack

Bài tập:


C‚ƒPush01*#isFull

C‚ƒPop01*#isEmpty

C‚ƒPeek01*#isEmpty
8/28/14
18

Thao tác isEmpty:

( PDV _\E

4 _ 8)•`\ 8)•
f
M3+hi,
n
o+hfikkf,
D `]
D%D
D f]
s
9.3. Các thao tác khác của stacks
8/28/14
19

Thao tác isFull:

( PDVO=E

4O= 8)•`]=

 8)•f

Thao tác makeEmpty:

B _V

A:3=0 *V)•f
Z%%+hi,
n
o+hfikk9UCVWXMq`,
D `]
D%D
D f]
s
)*DM3+hi,
n
hfikf]
s
9.3. Các thao tác khác của stacks
8/28/14
20
Lecture 9 – Ngăn xếp (Stacks)
9.1. Khái niệm về stacks
9.2. Các thao tác chính của stacks
9.3. Các thao tác khác của stacks
9.4. Ví dụ về ứng dụng của stack
9.4.1. Đảo mảng
9.4.2. Đảo chuỗi
9.4.3. Chuyển đổi hệ cơ số
9.4.4. Bracket Matching

9.4.5. Balancing Act
9.5. Bài tập thực hành
8/28/14
21
Lecture 9 – Ngăn xếp (Stacks)
9.1. Khái niệm về stacks
9.2. Các thao tác chính của stacks
9.3. Các thao tác khác của stacks
9.4. Ví dụ về ứng dụng của stack
9.4.1. Đảo mảng
9.4.2. Đảo chuỗi
9.4.3. Chuyển đổi hệ cơ số
9.4.4. Bracket Matching
9.4.5. Balancing Act
9.5. Bài tập thực hành
8/28/14
22
9.4.1. Đảo mảng

Ý tưởng giải quyết vấn đề:
` (&*Stack _:
? 3=0.8%=%')*V\cPush@
Pushhi*Stack
< B=%'% /Stack3=0))* %&87=@
PopDo *Stack*hi
„ (S8H
8/28/14
23
Lecture 9 – Ngăn xếp (Stacks)
9.1. Khái niệm về stacks

9.2. Các thao tác chính của stacks
9.3. Các thao tác khác của stacks
9.4. Ví dụ về ứng dụng của stack
9.4.1. Đảo mảng
9.4.2. Đảo chuỗi
9.4.3. Chuyển đổi hệ cơ số
9.4.4. Bracket Matching
9.4.5. Balancing Act
9.5. Bài tập thực hành
8/28/14
24
9.4.2. Đảo chuỗi

Ý tưởng xây dựng chương trình:
` J&*lV _
? _/mWordI'/ /)*V@
PushmWord*wStack
< AI/wStack*ƒK@
Popwordo *wStack*mWord
ConcatemWord*DD*ooutp string
„ …/8H
.
Chú ý: =P‚ƒ#l* / 
8/28/14
25

×