c Lc
1 Cu trúc d liu 1
1.1 Cu trúc d liu là gì? 2
1.2 Cu trúc d liu c s 3
1.2.1 Kiu d liu c s 3
1.2.2 Kiu có cu trúc 4
1.2.3 Kiu d liu tru tng 7
1.3 Cu trúc d liu hng vn 8
1.3.1 Cu trúc danh sách 8
1.3.2 Ngn xp 10
1.3.3 Hàng i 11
1.3.4 Cu trúc cây 12
1.3.5 Bm 17
2 Thut toán 23
2.1 C s v thut toán 24
2.1.1 Thut toán là gì? 24
2.1.2 Thut toán và cu trúc d liu 26
2.2 Các thut toán 30
2.2.1 Thut toán duyt 30
2.2.2 Thut toán sp xp 34
2.2.3 Thut toán qui 49
2.2.4 X lí xâu kí t 51
2.2.5 X lí tp 55
2.2.6 V hình 63
2.2.7 th 67
2.2.8 Tính toán s 71
2.2.9 Thut toán i sánh 78
2.2.10 Thut toán xp x và xác sut 82
2.3 ánh giá thut toán 87
2.3.1 ánh giá theo phc tp tính toán 87
2.3.2 ánh giá theo tính hp l 88
4.2.1 Th tc thit k có cu trúc 148
4.2.2 Các k thut phân hoch mô un n hình 151
4.2.3 Tiêu chí cho vic phân hoch mô un 160
4.2.4 Phân hoch chng trình 171
4.3 To ra c t mô un và c t kim th 173
4.3.1 To ra c t mô un 173
4.3.2 To ra c t kim th 175
4.4 To ra tài liu thit k chng trình 177
4.4.1 To ra tài liu thit k chng trình và ni dung 177
4.4.2 Nhng m cn lu ý khi to ra tài liu thit k chng trình 179
4.4.3 Hp kim m thit k 179
5 Thc hin chng trình 183
5.1 Lp trình 184
5.1.1 Mô thc lp trình 184
5.1.2 Phong cách lp trình 185
5.1.3 Dùng b x lí ngôn ng 186
5.1.4 Môi trng lp trình 187
5.2 Kim th 189
5.2.1 Tng quan v kim th 189
5.2.2 Kim thn v 190
5.2.3 Kim th tích hp 190
5.2.4 Kim th h thng 195
5.2.5 Các kim th khác 197
5.2.6 K hoch và nhim v kim th 197
6 Cp nht vn hành và phát trin h thng 204
6.1 Thit k chng trình 205
6.1.1 Thit k chng trình hng i tng 205
1 u trúc d liu
c ích ca chng
Vic chn cu trúc d liu thích hp nht và th tc mô
u trúc d
liu c s)
u trúc danh sách
Ngn xp
Hàng i
u trúc cây
m
Kiu d liu
s
Kiu con tr
Kiu n
Kiu nguyên
Kiu thc
Kiu kí t
Kiu logic
Kiu lit kê
Kiu b phn
Kiu có
u trúc
Kiu mng
Kiu bn ghi
u trúc d
liu c s
Kiu d liu
tru tng
1.2 Cu trúc d liu c s 3
1.2 u trúc d liu c s
1.2.1 Kiu d liu c s
Kiu d liu c s là tp các d liu riêng l và thng c dùng to ra chng trình. Nó
c phân loi thành các kiu n và con tr.
1.2.2 Kiu có cu trúc
u trúc d liu có cha mt cu trúc d liu c s hay bt kì kiu d liu c xác nh nào
nh phn t ca nó (d liu), c gi là kiu có cu trúc. Kiu có cu trúc c phân loi
thành kiu mng và kiu bn ghi.
(1) Kiu mng
ng c gi là bng. Kiu mng là d liu có cu trúc có cha d liu thuc cùng kiu và
kích c. Tng d liu cá nhân c gi là mt phn t mng, phn t bng hay phn t. Cách
ng c mô t hoc cách d liu c b trí có thay i tu theo ngôn ng lp trình c
dùng.
• Mng mt chiu
ng mt chiu có cu trúc d liu mà d liu c sp thành mng theo mt hàng. xác
nh mt phn t trong mng này, trc ht a vào du ngoc tròn m ( hay du ngoc
vuông [ sau tên ca mng, ri a vào ch s và du ngoc tròn óng ) hay du ngoc vuông
óng ]. Ch s ch ra s th t tính tnh ca mng, ni phn t xác nh ó c nh v.
ng "A" có s phn tc kí hiu là "i" c biu din là A (i).
Hình 1-2-2 Mng mt chiu
Th 1 th 2 th 3
…
th I
…
Phn t Phn t Phn t
…
Phn t
…
A(1) A(2) A(3)
…
A(I)
…
‚ Mng hai chiu
t cu trúc d liu trong ó d liu c sp hàng theo c hai chiu ngang và ng c
A(1,1)
A(1,2)
A(2,1)
A(2,2)
A(3,1)
A(3,2)
A(1,1)
A(2,1)
A(3,1)
A(1,2)
A(2,2)
A(3,2)
liu c D liu c
u tr lu tr
theo hàng theo ct
6 Chng 1 Cu trúc d liu
Hình 1-2-5 Xây dng mng ba chiu thành mng hai chiu
ng nhiu chiu nh các mng bn, nm hay nhiu chiu cng có thc nh ngha.
Tuy nhiên, có th có nhng gii hn nào ó v s chiu, tùy theo kiu ca ngôn ng lp trình
hay trình biên dch.
ng có thc phân loi thành mng tnh và mng ng theo phng pháp c dùng
sit cht mt min.
- Mng tnh: Mng mà vùng c yêu cu do chng trình xác nh
- Mng ng: Mng mà vùng c yêu cu sc xác nh ra sau khi ch sc
dùng cho vic to mng c cung cp qua mt biu thc và biu
thc ó c tính trong khi thc hin chng trình
(2) Kiu bn ghi
c du d liu kiu có cu trúc là cao cp hn trong vic d tham chiu và thc hin thao tác
trên các phn t, nó cng có nhc m ch nó ch có th gii quyt d liu thuc cùng mt
kiu. Do ó, d liu có cha các d liu vi kiu khác nhau phi ly dng ca d liu kiu bn
theo cùng cách nh mng mt chiu, tng d liu vn phi c t tên nhn din vì tng
phn t cha nhiu d liu.
1.2.3 Kiu d liu tru tng
liu cha cu trúc d liu nào ó và kiu ca các phép toán c gi là kiu d liu tru
ng. truy nhp vào kiu d liu này, bn không cn bit v cu trúc bên trong ca nó. Tt
các d liu u c che du ngoi tr d liu bn truy nhp tham chiu, thêm vào hay
xoá i. u này c gi là che giu thông tin. Che giu thông tin hoc che giu d liu
c kiu d liu c gi là bao bc d liu.
Hình 1-2-7 Kiu d liu tru tng
(Các phép toán +
u trúc d liu)
Chng trình
t qu
liu <Cu trúc d liu tru tng>
8 Chng 1 Cu trúc d liu
1.3 u trúc d liu hng vn
Các cu trúc d liu hng vn khác nhau có thc trù tính bng vic dùng các kiu
ng, kiu con tr và các cu trúc d liu c s khác.
1.3.1 u trúc danh sách
Không ging kiu d liu c s gii quyt cho tng d liu riêng l, cu trúc danh sách cho
phép d liu c móc ni ln nhau và gii quyt c mt cc. D liu c b trí theo cu trúc
danh sách này c gi là mt danh sách.
(1) Cu trúc danh sách và các ô
ng vic dùng ch s cho tng phn t trong mng, có th truy nhp nhanh chóng vào bt kì
phn t nào. Tng t nh vy, vic thay i d liu có thc thc hin d dàng. Nu bn
chèn mt d liu vào âu ó trong mng, bn phi dch chuyn toàn b tng d liu sau ó lùi
i mt v trí. Nu bn xoá mt d liu trong mng, tng t, bn phi dch chuyn toàn b
ng d liu sau d liu b xoá ó nhích lên mt v trí.
Hình 1-3-1 Chèn thêm mt phn t mng
chèn d liu vào danh sách. Ô cha d liu (Inoue) vn còn trong vùng b nh nh rác sau khi
liu ã b xoá, nhc v trong Hình 1-3-4.
Hình 1-3-4 Xoá d liu khi danh sách
c du cu trúc danh sách cho phép d liu c chèn thêm hay c xoá i ch bng cách
thay th các con tr, nó có nhc m là bn phi ln theo tng con tr mt tu nu bn
mun truy nhp vào d liu c bit.
(4) Kiu cu trúc danh sách
Các cu trúc danh sách tiêu biu bao gm:
- Danh sách mt chiu
- Danh sách hai chiu
- Danh sách vòng.
i vì nhng danh sách này c biu din di dng tuyn thng, nên nói chung chúng c
i là danh sách tuyn tính.
• Danh sách mt chiu
Danh sách mt chiu cng còn c gi là danh sách mt hng. Phn con tr ca ô cha
Phn d liu Phn con tr Phn d liu Phn con tr
InoueArai
Ueki
Phn d liu Phn con tr
Arai
Arai
Inoue
Ueki Endou
Endou Ueki
Ô c chèn
i d liu c chèn
Trc khi chèn
Sau khi chèn
Phn d liu Phn con tr
Inoue Endou Ueki Arai
Arai Inoue Wada NULL
u
Ô
Arai Inoue Wada
NULL
NULL
uôi
u
Arai Inoue Wada
u
trí uôi
trí u
1.3 Cu trúc d liu hng vn 11
Hình 1-3-8 Trò chi ném vòng
Trò chi ném vòng c chi bng cách ném các vòng mu theo th t, lc, vàng và lam
a vào d liu). Chúng c ly ra tng cái mt (a ra d liu) theo th to li vic ném
vào, tc là lam, vàng, lc và . Tc là vòng lam c ném vào cui cùng sc ly ra u
tiên.
Kiu cu trúc d liu này mà có thc so sánh vi trò chi ném vòng c gi là ngn xp.
thng này còn có thut ng là h thng vào-sau-ra-trc (LIFO). Vic lu tr d liu trong
ngn xp c gi là "n vào (PUSH)" và vic ly d liu ra t ngn xp c gi là "bt ra
(POP)." Bin u khin vic n vào và bt ra c gi là con tr ngn xp.
n d liu vào ngn xp, t con tr ngn xp "sp" là +1 và lu gi d liu trong phn t
ng c vit là "sp." làm bt ra d liu t ngn xp, hãy ly d liu ã c lu gi
trong mng c ch bi "sp" và t con tr ngn xp là sp-1.
Hình 1-3-9 Cu trúc ngn xp
1.3.3 Hàng i
Hàng i là cu trúc d liu da trên mng mt chiu. D liu c lu giu tiên c c
kiu làm vic bao gm phân loi tng bc.
Hình 1-3-12 S t chc
c du tng ô c sp theo th t tuyn tính trong cu trúc danh sách, d liu c sp
trong khi nó phân nhánh trong cu trúc cây.
u trúc cây bao gm các phn tc v di ây:
- Nút: Tng ng vi d liu
- Nhánh: Ni nút này vi nút khác
- Gc: Nút cp cao nht, không có cha m
- Con: Nút r nhánh ra di mt nút khác
- Cha m: D liu gc trc khi nó chia nhánh
- Lá: Nút cp thp nht không có con
Hình 1-3-13 v ra cu trúc cây
Hình 1-3-13 Cu trúc cây
liu A D liu B D liu C D liu D
(1) (2) (3) (4) (5) (6)
p xp
Hàng i
Con tru Con tr cui
ng thng
Qun lý
hành chính
Qun lý
nhà máy
Qun lý
bán hàng
Qun lý b phn
hành chính
Qun lý b phn
toán
Qun lý b phn
kéo dài sang bên trái và các nhánh ch ra trong khi phn con tr phi ch ra v trí ca nút kéo
dài sang bên phi và các nhánh ch ra.
Hình 1-3-14 Cu trúc cây nh phân
Phn con tr trái Phn d liu Phn con tr phi
Cây nh phân có cu trúc phân cp cha m - con, nhc v trong Hình 1-3-15.
Hình 1-3-15 Cu trúc cây nh phân c s
<Cách thc hin vic duyt d liu cây nh phân>
duyt d liu c bit trong d liu cây nh phân, phi ln theo tng nút mt. Có ba
phng pháp thc hin duyt d liu cây nh phân. Vì khó gii thích bng li nên hãy kim li
Hình 1-3-16 và xem cách d liu c duyt bng vic dùng tng phng pháp.
Hình 1-3-16 Cách thc hin duyt d liu cây nh phân
- Th t gc trc (Pre-order): Vi gc là m bt u, nút bên trái ca mi nút c
duyt qua theo cách tun t.
- Th t gc gia (Mid-order): Vi lá ti áy bên trái làm m bt u, ri duyt qua nút
cha nó và tip ó duyt qua phn còn li ca nút ó theo cách tun t.
- Th t gc sau (Post order): Vi lá ti áy bên trái làm m bt u, phn bên phi mi
nút c duyt qua theo cách tun t ri mi n nút cha ca nó.
(2) Cây nh phân hoàn chnh
u cây nh phân c xây dng theo cách s các nhánh t gc ti tng lá dc theo mt
nhánh là bng hoc sai khác mt so vi s các nhánh t gc ti tng lá dc theo nhánh khác
(hoc nu chiu cao t gc ti tng lá là bng hay sai khác mt vi chiu cao t gc ti tng
lá thuc vào nhánh khác), thì cây ó c gi là cây nh phân hoàn chnh. Hình 1-3-17 v ra
cây nh phân hoàn chnh có mi nút.
Cha
Con
Con
14 Chng 1 Cu trúc d liu
Hình 1-3-17 Cây nh phân hoàn chnh
(3) Cây tìm kim nh phân
Cây tìm kim nh phân c dùng nh mt bin th ca cây nh phân. Trong trng hp ca
2 7
3 6 8 10
4 5 9
<Cây nh phân hoàn chnh> <Cu trúc d liu>
15
2
8 21
10 28
13
1) 15>10
2) 8<10
3) 10=10
1.3 Cu trúc d liu hng vn 15
a. c trng ca B-cây
- tng vic s dng vùng b nh, s con tr mà mi nút có c t là m/2 hoc
nhiu hn và là m hoc ít hn. S con tr theo mt ng tuy vy c t là 2 hoc
nhiu hn.
- Mi lúc d liu b xoá hay c b sung thêm, vic ch ra và ghép li c thc hin
ng cho s các phn t ca mt nút có th tr thành m/2 hay nhiu hn hoc m
hay ít hn. u này cho phép lá bao gi cng c duy trì trên cùng mc.
- Vic tìm kim bt u t gc.
- Vic thêm vào hay xoá i d liu bt u t lá.
Hình 1-3-19 ch ra B-cây b nm vi các phn t7, 6, 10, 2, 5, 12, 4, 9, 8, 11, 1, 3.
Hình 1-3-19 B-cây b nm
b. Xoá d liu
Hình 1-3-20 v ra trng hp d liu "4" b xoá khi B-cây c v trong Hình 1-3-19.
u mt mình "4" b xoá i, thì s các phn t b xoá ca mt nút tr thành mt và các
yêu cu ca B-cây không thc áp ng.
Hình 1-3-20 B-cây sai
Nút tó "4" b xoá i c gp vào mt nút k hoc bên phi hoc bên trái. Bi vì
6
53
41
9
87
3
56
41
ng ây không phi là ng
i quan h v kích c
trong hình ch nht chm
là khác nhau
6
4 5
1
3 2
6
5
4 2
1
3
5
3
1 2
3
1 2
4
4
3 2
1
+ 2 × 3
2
+ 3 × 3
1
+ 4 × 3
0
= 27 + 18 + 9 + 4
= 58 : a ch (ch s)
∗ Giá tr ca tng ch s theo h c s 3 là 3 hay nh hn. Tuy nhiên trong trng hp
này s kin này không cn c tính ti.
(2) ng ngha
Khi mt khoá c chuyn thành a ch bng vic dùng hàm bm, các khoá khác nhau có th
c chuyn vào cùng mt a ch. u này c gi là ng ngha (hay ng ) (xem Hình
1-3-24). Mt bn ghi có th dùng a chã chuyn i c gi là bn ghi nhà còn bn ghi
không th dùng c nó sc gi là bn ghi ng ngha.
18 Chng 1 Cu trúc d liu
Hình 1-3-24 Xut hin ng ngha
gii quyt sng ngha, mt phng pháp c bit hay phng pháp dây chuyn c
dùng:
• Phng pháp tun t
ng vic dùng phng pháp tun t, bn ghi ng ngha c lu gi trong không gian t
do c nh v gn a ch mong mun. Có kh nng là sng ngha li có th xut hin
theo phn ng dây chuyn.
‚ Phng pháp dây chuyn
i vic dùng phng pháp dây chuyn, mt vùng b nh tách bit c thit lp và các
n ghi ng ngha c lu gi trong vùng này. Trong trng hp này, cn cung cp mt
con tr ch ra a ch ni các bn ghi ng ngha c ct gi.
n ghi có thc s
ng vi khóa 234
(Bn ghi nhà)
a. Cây nh phân b. Hàng i c. Ngn xp d. ng
Q4 Hai thao tác ngn xp c nh ngha nh sau:
PUSH n: D liu (nguyên "n") c y vào ngn xp.
POP: D liu c bt ra khi ngn xp.
u thao tác ngn xp c thc hin trên ngn xp rng theo th tc c nêu di ây, thì
có th thu c kt qu gì?
PUSH 1 → PUSH 5 → POP → PUSH 7 → PUSH 6 → PUSH 4 →POP → POP → PUSH 3
a b C d e
1 3 3 3 6
7 4 4 7 4
3 5 6 1 3
a ch
100
101
102
103
a [1, 1]
a [1, 1]
20 Chng 1 Cu trúc d liu
Q5 Hình 2 là biu din mng cho cây nh phân c v trong Hình 1. Giá tr nào nên
c t vào ch "a"?
Ch s Giá tr
Con tr 1 Con tr 2
1 200 3 2
2 220 0 0
3 180 5
a
4 190 0 0
5 150 6 0
6 130 0 0
11
13
15
200
220
180
150
190
130
Bài tp 21
Q8 Cây nh phân c v di ây có thc biu din bng vic dùng biu thc s
c. Biu thc nào là úng?
a. A + B × C + (D + E) ÷ F b. A + B × C - (D + E) ÷ F
c. A + B × C - D + E ÷ F d. A× B + C + (D - E) ÷ F
e. A × B + C - D + E ÷ F
Q9 Xét ti vic lu gi d liu bng cách dùng B-cây, hãy chn câu chú thích úng t
nhng câu sau:
a. Chia ra và gp li các nút cho phép chiu sâu phân cp tr thành nh nhau.
b. Nhn din v trí ni d liu c lu gi bng vic dùng mt hàm nào ó và giá tr khoá.
c. Ch có th truy nhp tun t ti d liu u và d liu tip ó.
d. Có danh mc và mt thành viên. Thành viên là tp c t chc tun t.
Q10 Có mt ng vi giá tr ca nút cha m nh hn giá tr ca nút con. chèn thêm
liu vào trong ng này, bn có th thêm mt phn t vào phn sau nht và lp
i vic trao i cha m vi con cái khi phn t này nh hn cha m. Khi phn t 7
c thêm vào v trí * ca ng tip, phn t nào s vào v trí A?
a. 7 b. 9 c. 11 d. 24 e. 25
Q11 Mt s có nm ch s (a
1
a
2
28
19
29 34
24
25
*
A
-
+
÷
F
+
XA
CB D
E
22 Chng 1 Cu trúc d liu
a. 1 b. 2 c. 7 d. 11
Q12 Nm d liu vi các giá tr khoá c phân bu và ngu nhiên trong phm vi t
1 ti 1,000,000 phi c ng kí vào bng bm kích c 10. Xác sut xp x cho
ng xy ra là gì? ây, phn d thu c khi mt giá tr khoá c chia theo
kích c ca bng bm c dùng nh giá tr bm.
a. 0.2 b. 0.5 c. 0.7 d. 0.9
2 Thut toán
c ích ca chng
Các c s ca vic lp trình là thit k thut toán.
Trong thit k cu trúc logic ca chng trình, u
quan trng là dùng thut toán thích hp nht. Tng t
nh vy, trong vic chn chng trình t th vin,
thut toán nào c dùng là mt trong nhng tiêu
chun quan trng nht chn chng trình thích hp