Giáo trình Cấu trúc dữ liệu và giải thuật Phần 1 | Đại học Kỹ thuật Công nghệ - Cần Thơ

Giáo trình Cấu trúc dữ liệu và giải thuật Phần 1 | Đại học Kỹ thuật Công nghệ - Cần Thơ. Tài liệu được biên soạn dưới dạng file PDF gồm 20 trang, giúp bạn tham khảo, ôn tập và đạt kết quả cao trong kì thi sắp tới. Mời bạn đọc đón xem!

j DAI HOC CONG NG HlfiP HA NOl
l l l l l l l l l l l l l l ll i l l l \
GT.0000026859
G I A O T R I N H
nhA x u At b An k h o a h o c vA KY THUAT
TRUdNG £>AI HOC CONG NGHIEP HA NQI
AN VAN MINH - TRAN HUNG CUCJNG
G I A O T R I M !
A
I
NHA XUAT BAN KHOA HOC VA KY THUAT
MUC LUC
Trang
HNOI DAU ...................................................................................................................7
Chirong 1
TONG QUAN VE CAU TRUC DU LIEU VA GIAI THUAT
. VAI TRO CUA VIEC XAY Dl/NG CAU TRUC DU' LIEU
....................................
9
. CAC TIEU CHUAN DANH G1A CAU TRUC DU' LIEU........................................12
. CAC CAU TRUC DU' LIEU CO SCJ TRONG C/C++
............................................
13
1.3.1. Djnh nghTa kieu dir lie u....................................................................................14
1.3.2. Cac thuoc tinh cua mqt kieu dir lieu
...............................................................
14
1.3.3. Cac kieu du lieu cor b an ....................................................................................14
1.3.4. Cac kieu dir lieu co cau true
...........................................................................
15
1.3.5. Cac phep toan trong h? kieu C/C++............................................................... 19
. g iAi t h u At - ph An t ic h vA d An h g iA g iAi t h u At
...............................
19
1.4.1. Giai th ua t..........................................................................................................19
1.4.2. Bieu dien giai thuat ......................................................................................... 21
1.4.3. Phan tich giai thu at.......................................................................................... 21
1.4.4. Phan tich mpt so giai th uat.............................................................................. 28
TLUAN CHUNG....................................................................................................... 32
ITAPCHU'ONG 1 ..................................................................................................... 32
Chining 2
DE QUY VA GIAI THUAT DE QUY
K.HA1 N1EM VEDEQUY ....................................................................................... 34
g i Ai t h u At d e q u y v A h Am d e q u y
..........................................................
34
2.2.1. Giai thuat d? quy ............................................................................................. 34
2.2.2. Ham de quy ..................................................................................................... 35
THIET K.E GlAl THUAT DE QUY ......................................................................... 36
2.3.1. Ham n ! ............................................................................................................. 36
2.3.2. Bai toan day s6 FIBONACCI.......................................................................... 37
2.3.3. Bai toan Thap HaNoi .................................................................................. 38
HIEU LQ'C CUA DE Q U Y ....................................................................................... 40
ITAPCHU'ONG 2 ......................................................................................................42
3
Chiro'ng 3
DANH SACH TUYEN TINH
3.1. KHAlNIEM DANH SACH TUYEN TINH
............................................................
44
3.1.1. Khai niem ....................................................................................................... 44
3.1.2. Cac phep toan tren danh sach ......................................................................... 44
3.2. LUlI TRU' KE TIEP CUA DANH SACH TUYEN TINH
......................................
46
3.2.1. Thiet ke cau true dir lieu................................................................................. 46
3.2.2. Cai dat cac phep toan tren danh sach
.............................................................
48
3.2.3. Bai tap ap dpng............................................................................................... 54
3.3. DANH SACH MOC NOI ........................................................................................ 61
3.3.1. KiSu con tro va cac khai niem lien quan
........................................................
61
3.3.2. Danh sach moc noi don .................................................................................. 66
3.4. DANH SACH NOI VONG .......................................................................................89
3.5. DANH SACH MOC NOI HAI CHIEU .................................................................... 90
3.5.1. Phep bo sung mQt nut m o i.............................................................................. 92
3.5.2. Loai bo mpt nut tren danh sach
......................................................................
93
3.6. UNO DUNG DANH SACH MOC NOI ................................................................... 94
3.6.1. Giai thieu umg dung ........................................................................................94
3.6.2. Giai thuat.........................................................................................................95
3.7. STACK VA QUEUE ................................................................................................97
3.7.1. Stack (Ngan xe p).............................................................................................97
3.7.2. Queue (Hang d p i).......................................................................................... 114
BAI TAP CHUONG 3 ................................................................................................... 125
Chirffng 4
CAY
4.1. CAY VACAC KHAI NIEM CO BAN ...................................................................131
4.1.1. Djnh nghTa..................................................................................................... 131
4.1.2. MQt so khai nipm ca ban .............................................................................. 132
4.2. CAYNH1 PHAN .................................................................................................... 133
4.2.1. Djnh nghTa..................................................................................................... 133
4.2.2. Tinh chat ....................................................................................................... 133
4.2.3. Bieu dien cay nhi phan .................................................................................. 134
4.2.4. Phep duyet cay nhi phan ............................................................................... 138
4.2.5. Cay nhj phan bi6u diin bieu thurc
.................................................................
140
4
3. CAY NHI PHAN l i\1 KIEM ................................................................................ 142
4.3.1. Djnh nghTa......................................................................................................142
4.3.2. Cai dat cay nhj phan tim kiem ........................................................................143
4.3.3. Cac thao tac ca ban tren cay nhj phan tim kiem ............................................144
4.3.4. Thai gian thirc hien cac phep toan tren cay nhi phan tim kiem
...................
157
4. CAY CAN BANG (AVL TR EE )
............................................................................
158
4.4.1. Cay can bang hoan toan (CCBHT) ................................................................159
4.4.2. Cay can bang................................................................................... .
..........
- 159
Al TAP CHU'ONG 4 ....................................................................................................166
Chirffng 5
SAP XEP VA TiM KIEM
I. c A c PHUONG PHAP SAP X EP
..........................................................................
169
5.1.1. Khai niem sap x e p ..........................................................................................169
5.1.2. Ba plurang phap sap xep ca ban
...................................................................
170
5.1.3. Phircmg phap phan doan ............................................................................... 184
5.1.4. Phutmg phap vun dong
.................................................................................
191
5.1.5. Phirong phap trpn .......................................................................................... 201
5.1.6. Bai tap ap dung.............................................................................................. 211
ET LUAN CHUNG..................................................................................................... 216
.2. TiM KIEM .............................................................................................................. 217
5.2.1. Bai toan tim kiem .......................................................................................... 217
5.2.2. Tim kiem tuan t p ........................................................................................... 217
5.2.3. Tim kiem nhj phan ........................................................................................ 221
5.2.4. Bai tap ap dpng.............................................................................................. 225
Al TAP CHU'ONG 5 ................................................................................................... 229
Al I.If.UTHAM KHAO ...............................................................................................231
5
L O I N O I D A U
A lgdy nay cong nghe thong tin duqc ung dung rong rai trong moi ITnh
1 V vice cua ddi song xa hoi. Viec xdy dung cac he thong phan mem ung
dung de gidi quyet yeu cdu thay the cho con nguoi trd nen pho bien hon bao
gia het. Tuy nhien, day luon la mot viec het sue kho khan trong moi giai
doqn phat trien, trong do co mot giai doan het sue quan trong do la thiet ke
cdu true dir lieu he thong va cac gidi thuat gidi quyet cac yeu cdu.
Cuon gido trinh Cau true dir lieu va giai tliuat " ra dai phdn nao giup sinh
vien, nhieng nha phat trien phdn mem trong tuomg lai co duqc nhung kien
thicc co ban ban ddu cho van de lira chon, xay dung cdu true dir lieu cung
nhu cac gidi thuat. Gido trinh nay la tai lieu hoc tap cua mot mon hoc co so
cung ten trong Chuong trinh ddo tao ky su cong nghe thong tin. Noi dung
gido trinh trinh bay nhieng kien thirc co ban ve cdu true dir lieu va ede gidi
thuat xir ly lien quan, giup sinh vien nhqn thirc duqc van de thiet ke vd lua
chon cdu true dir lieu vd cac gidi thuat, mot giai doan quan trong trong quy
trinh phdt trien phdn mem.
De hoc tot mon hoc nay, doi hoi sinh vien phai thanh thao It nhat mot ngon
ngir lap trinh co ban nhu Pascal, C/C++ ..... thanh thao cac ky thuat lap
trinh nhu: cdu true re nhanh, cdu true lap, ky thuat lap trinh don the
(sic dung ham).
NOt dung gido trinh duqc chla lam 5 chuong:
Chuong 1. Tong quan ve cdu true die lieu vd gidi thuat, bao gom cac
khdi niem ve cdu true dir lieu vd gidi thuat, moi quan he giua chung, van
de thiet ke cdu true dir lieu, thiet ke vd phdn tich gidi thuat, danh gia do
phirc tap cua gidi thuat.
Chuong 2. De quy vd gidi thuat de quy, mot phuong phap thiet ke gidi
thuat khd quan trong, nhat la vdi cac gidi thuat bieu dien cac thao tac xtir
iy cdu true die lieu dang cay.
7
Chuffng 3. Danh sach tuyen tinh, mot lo'ai cdu true dir lieu rat pho bien
trong cac bai loan tin hoc. Trong chuong nay chung toi trinh bay cac
phuong phap luu trie danh sdeh vd cac thao tac xic ly tuemg ung vdi moi
loai danh sdeh.
Chuffng 4. Cay, mot dang cdu true die lieu phi tuyen tinh, chuong nay
chu yeu noi ve cay nhi phdn vd cac ung dung cua chung.
Chuffng 5. Sap xep vd tim kiem, tap trung vao van de mo ta, thiet ke vd
danh gia cac gidi thudt sap xep vd tim kiem thong dung, cung nhu van de
cai dat cac gidi thudt nay trong bai toan ung dung.
Cac chuong trinh ung dung vd bai tap trong moi chuong da duoc chon loc
d mice do phu hop ddi vdi sinh vien, qua do sinh vien hieu sau sac them ve
bai giang, cimg cd them ve ky thudt chi dat chuong trinh vd nam bat duoc
mot so kien thirc khdng duoc true tiep gioi thieu trong gido trinh.
Trong qua trinh bien soan gido trinh nay, chung toi da nhan duoc rat nhieu
y kien dong gop ve noi dung tic phia ede dong nghiep. Chung toi xin chan
thanh cam on.
Mac dii da cd gang rat nhieu trong khi bien soan, nhung cung khdng the
tranh khoi nhung thieu sot. Chung toi mong muon nhan duoc nhung y kien
dong gop, chinh sica de noi dung cua gido trinh duoc hoan thien hon trong
nhung Ian tai ban sau.
Moi y kien dong gop xin giri ve Khoa Cong nghe thong tin - Truong Dai hoc
Cong nghiep Ha Noi, hoac giri vao hop thu dien tic: anvanminh 78@yahoo. com.
NHOM TAC GIA
An Van M inli - Tran Ilu ng Cirung
8
can phai hieu ro nhung thao tac nao tac dong len du lieu do. Nhu vay trong
mot chucrng trinh, cau true du lieu va giai thuat co moi quan he chat che veri
nhau, dugc the hien qua cong thuc sau:
Cau true dir lieu + Giai thuat = Chirong trinh
Chang han khi dua ra khai niem tap hop thi ngucri ta dinh nghTa cac phep
toan tren tap hop do (phep hop, phep giao, phep trir,...), hay khi dua ra khai
niem menh de ta cung phai dinh nghTa cac phep toan: phep hoi, phep tuyen,
keo theo,... trong ngon ngu lap trinh cung tuang tu nhu vay: vi du khi djnh
nghTa kieu nguyen thi ta phai chi ra pham vi bieu dien trong 2 byte vai mien
gia tri tu -32768 den +32767 va cac thao tac tren kieu du lieu nay trong do
co phep chia lay du. Tuy nhien khi dinh nghTa kieu so thuc thi lai khong co
phep toan nay.
Vai mot cau true dir lieu da chon, se co nhung giai thuat tuang ung, phu
hap. Khi cau true du lieu thay doi thuang giai thuat cung phai thay doi theo
de tranh viec xu ly gugng ep, thieu tu nhien tren mot cau true khong phu
hap. Han nua, mot cau true du lieu tot se giup giai thuat xu ly tren do co the
phat huy tac dung tot han, vira nhanh vira tiet kiem, giai thuat cung don gian
va de hieu han.
Vi du 1.1: Mot chuang trinh quan ly diem thi cua sinh vien can luu cac
diem so cua 3 sinh vien. Do moi sinh vien co 4 diem so tuang ung vai 4
mon hoc khac nhau nen du lieu co dang nhu sau:
Bang 1.1. Bieu diin du lieu diem cua cac sinh vien
Sinh vien Mon 1 Mon 2
Mon 3 Mon 4
SVI 8
7
7
5
SV2 5 4
3 8
SV3 8 6 6 7
Xet thao tac xu ly la xuat diem so cac mon cua timg sinh vien.
Gia sir co cac phuang an to chuc luu tr£r nhu sau:
Phuang an 1: Sit dung mang mot chieu:
Co tat ca 3(SV) * 4(Mon) = 12 diem so can luu tru, do do ta khai bao mang
nhu sau:
0
i n t a [12];
Khi do mang a cac phan tir se dugc luu tru nhu sau:
8 7 7 5 5
4 3
8 8 6
6
7
k ___-yv.
__
____
J V
__
___
^
V*
Y
SV1 SV2 SV3
Va truy xuat diem so mon j cua sinh vien i la phan tu tai dong i cot j trong
bang. Be truy xuat din phin tu nay ta phai sir dung cong thuc xac dinh chi
so tuang ung trong mang a:
Bang diem (dong i, cot j) => a[ i *so cot + j ]
Ngugc lai, vai mot phan tu bat ky trong mang, muon biet do la diem so cua
sinh vien nao, mon gi, phai dung cong thuc xac dinh sau:
a[i] => bang diem (ddng(i/cot), cot (i % so cot))
Vai phuang an nay, giai thuat xir ly dugc cai dat nhu sau:
void xuat ( int a [])
{ int i, mon, so_mon = 4;
for (i = 0; i < 12; i++)
1
sv = i / so_mon;
mon = i % so_mon;
cout<<"\nBiem mon: "«mon;
cout<<" cua sinh vien "«sv;
cout«" la: " « a[i]«endl;
1
1
Phuang an 2: Sir dung mang hai chieu:
Khai bao mang hai chieu a co kich thuac 3 dong * 4 cot nhu sau:
i n t a [3][4] ;
Bang 1.2. Luu dir lifu diem sinh vien bang mang hai chieu
Cat 1
Cm2 Cat 3 Cpt 4
Dong 1 a[l][l] = 7
a[l][2] =9
a[l][3] = 7
a[l][4] = 5
Ddng 2 a[2][l]= 5
a[2][2] = 4 a[2][3] = 2
a[2][4] = 7
Dong 3
a[3][l] = 8
a[3][2] = 9 a[3][3] = 6
a[3][4] = 7
11
Vi du: Mot so tinh huong sau chon cau true luu tru sai
- Chon bien so nguyen kieu int de liru tru tien thuang ban hang (dugc
ti'nh theo cong thuc tien thuang ban hang = tri gia hang *5%), do vay khi
lam tron moi gia tri tien thuang se gay thiet hai cho nhan vien ban hang.
Truong hop nay phai sir dung bien so thuc de phan anh dung ket qua cua
cong thuc ti'nh thuc te.
- Trong truang trung hoc, moi lop co the nhan toi da 25 hoc sinh. Lap hien
co 20 hoc sinh, moi thang, moi hoc sinh dong hoc phi 15.000 dong. Chon
mot bien so nguyen (kha nang luu tru -32768 + 32767) de luu tru tong so
hoc phi cua lap hoc trong thang, neu xay ra truang hap co them 5 hoc
sinh nua vao lap thi gia tri tong hoc phi thu dugc la 375000 dong, vugt
kha nang luu tru cua bien da chpn, gay ra tinh trang tran so va sai lech.
Phu hffp v&i cac gidi thuat xu ly tren do: Tieu chuan nay giup tang hieu
qua cua bai toan, vi?c phat trien cac giai thuat dan gian, tu nhien han va
chucmg trinh dat hieu qua cao han ve toe do xir ly.
Tiet kiem tdi nguyen he thong: Cau true du lieu chi nen sir dung tai
nguyen vira du de dam nhiem dugc chuc nang cua no. Tieu chuan nay
nen can nhac tuy vao tinh huong cu the khi thuc hien bai toan. Neu to
chuc sir dung bai toan can co nhung xir ly nhanh thi khi chon cau true du
lieu yeu to tiet kiem thai gian xir ly phai dat nang han tieu chuan sir dung
toi da bo nho, va ngugc lai.
Vi du: Mot so tinh huong chon cau true luu tru lang phi
- Sir dung bien int de luu tru mot gia trj cho biet thang hien hanh. Trong
tinh huong nay ta chi can sir dung bien kieu byte la du.
- Be luu tru danh sach hoc vien trong mot lap, su dung mang 60 phan tir
(giai han so hgc vien trong lap toi da la 80). Neu so lugng hpc vien that
su it han 60, thi gay lang phi bo nha. Han nua, so hgc vien co the thay
doi theo timg ky, timg nam. Trong truang hop nay ta can co mot cau true
du lieu linh dong han mang, chang han danh sach moc noi.
.3. CAC CAU TRUC DU LIEU
C O S O
TRONG C/C+ +
May tinh thuc su chi co the luu tru du lieu a dang nhi phan tho so. NeU
muon phan anh dugc du lieu thuc te von rat da dang va phong phu, can phai
13
xay dung nhung phep anh xa, nhung quy tac to chuc plu'rc tap che len tang
du lieu tho, nham dua ra nhung khai niem logic ve hinh thuc luu tru khac
nhau thucrng dugc goi la kieu die lieu. Nhu da phan tich a phan dau, giua
hinh thuc luu tru va cac thao tac xir ly tren do co quan he mat thiet vdi nhau.
Tir do co the dua ra mot dinh nghia cho kieu du lieu nhu sau.
1.3.1. Djnh nghTa kieu d ll' lieu
Kieu du lieu T dugc xac djnh bai bo <V, 0>, vai :
- V: tap cac gia trj hop le ma doi tugng kieu T co the luu tru.
- O: tap cac thao tac xir ly co the thi hanh tren doi tugng kieu T.
Vi du:
- Kieu du lieu Ky tu alphabet = <VC, Oc> vai
Vc = {a -> z, A -> Z}
Oc = {Lay ma ASCII cua ky tu, bien doi ky tu thudng thanh ky tu hoa,...}
- Kieu du lieu So nguyen = <Vj, Oj>
V, = {-32768 -> 32767}
Oj = {+, *, /, %, cac phep so sanh, ...}
Nhu vay, muon su dung mot kieu du lieu can nam vung ca noi dung du lieu
dugc phep luu tru va cac xu ly tac dong tren do.
1.3.2. Cac thuoc tinh cua mot kieu du' lieu
Mot kieu du lieu bao gom cac thuoc tinh sau :
- Ten kieu dO lieu
- Mien gia trj
- Kich thude luu tru
- Tap cac toan tu tac dong len kieu du lieu.
1.3.3. Cac kieu du' lieu cd ban
Thong thudng trong mot he kieu cua ngon ngu lap trinh se co mot so kieu du
lieu dugc goi la kieu die lieu dan hay kieu du lieu nguyen tic (atomic).
Thong thudng, cac kieu du lieu ca ban bao gom:
- Kieu co thu tu rdi rac: so nguyen, ky tu, liet ke.
- Kieu khong rdi rac: so thuc.
14
Tuy timg ngon ngu lap trinh, cac kieu dir lieu dinh nghTa san nay co the khac
nhau. Chang han, vdi ngon ngir C/C++, cac kieu dir lieu nay chi gom so
nguyen, so thuc, ky tu. Va theo quan diem cua C/C++, kieu ky tu thirc chat
cung la kieu so nguyen ve mat luu tru, chi khac ve each sir dung.
Bailg 1.3. He kieu ciia C/C++
Ten kieu
Pham vi
Kich thuoc Giai thich
int
-32768 -> +32767
2 bytes
So nguyen
co dau
char
-128 ->+127
1 byte
long
-2147483648 -> +2147483647
4 bytes
unsigned char
0 -> 255
1 byte
So nguyen
khong dau
unsigned int
0-> 65535
2 bytes
unsigned long
0 -> 4294967259
4 bytes
float
1.2*1 O'38 -> 3.4* I038
4 bytes
So thirc
(dau cham
dong)
fouble
2.2*1 O'308 -> 1.8*10308
8 bytes
long double
3.5* 1 O'3942 - > 3.4* 104932
10 bytes
L.3.4. Cac kieu du" lieu co cau true
Khi giai quyet cac bai toan phirc tap, neu ta chi sir dung cac du ca sd la
khdng du, do do phai can den cac kieu du lieu co cau true. Chang han thong
tin cua mot sinh vien bao gom: ma sinh vien (so nguyen), ho ten sinh vien
(chuoi), nam sinh (sd nguyen), que quan (chuoi). Trong trudng hap nay ta
khdng thd dung kieu du lieu ca ban dugc ma phai ket hop chung lai vdi nhau
de tao nen kieu du lieu cd cau true. Mot cau true dir lieu bao gom mot tap
hop cac die lieu nguyen tic, cac thanh phan nay ket hop vdi nhau theo mot
phuang thuc dugc quy dinh bdi ngon ngu lap trinh. Da sd cac ngon ngu lap
trinh ddu cai dat san mot sd kieu cd cau true ca ban nhu mang, chuoi, tap tin,
cdu true... va cung cdp ca che cho ngudi lap trinh tu dinh nghTa kieu du lieu
mdi.
f.3.4.1. Mang mot chieu
Trong C/C++ va trong nhieu ngon ngu thong dung khac cd mot each dan
gian nhat de tao va moc noi cac ddi tugng trong mot tap hop, do la each sap
xep cac doi tugng do thanh mot day. Be luu tru day ddi tugng trong may
tinh ngudi ta sir dung mang mot chieu. Khi do ta cd mot cau true du lieu
dugc goi la mang. Nhu vay, cd the noi mot mang la mot cau true du lieu
15
gom mot day xac dinh cac du lieu thanh phan cung mot kieu (mang so
nguyen, mang so thuc, mang cac cau true ,...).
Trong C/C++ viec khai bao mot mang kha dem gian, can chi ra kieu du lieu
cua phan tu, ten mang, kich thuac mang, mau nhu sau:
<Kieu phan tu-> <ten mang> <[kich thiruc^;
Vi du: i n t a [ 10 ] ; //khai bao mang a chua 10 so nguyen.
I.3.4.2. Chudi
Trong C/C++, chuoi thuc chat la mot mang cac ky tu, tuy nhien co khac la
trong chuoi co chua ky tu ket thuc ky hieu la \0’. Viec nhap va hien thi
chuoi cung don gian han mang, ta co the su dung cac ham nhap xuat chuan
trong thu vien stdio.h nhu sc a n f (), gets(), cout«), puts (),...
C/C++ cung dinh nghTa mot so ham xu ly chuoi (thu vien string.h) nhu:
strcpyO, strlenO, strcmpO, strchrO, strcat(),
strstr ()...
1.3.4.3. Mang nhieu chieu
Mang nhieu chieu dugc sir dung nhieu nhat la mang 2 chieu, co the hinh
dung mang 2 chieu giong nhu mot bang gom cac dong va cac cot, chang han,
bang ghi nhiet do trung binh trong 5 nam a nam thanh pho.
Bang 1.4. Du- lifu tlioi tiet cic thanh pho
2003 2004 2005 2006 2007
Ha Nqi 27
27,5 28,5 30
27
TP. HoChiMinh 32,5 32
30,5 31
30
Hue 30
31 32
28
29
Hai Phong
27,5 26,5 26
27,5
27
Ha Long
25 27 26
28
27
Cau true khai bao cua mang nhieu chieu dugc viet nhu sau:
<Kieu phan tu> <ten mang ><[kich thuac chieu 1 ],...,[kich thuac chieu n]>;
Sau ten mang, moi cap ngoac vuong [ ] dugc tinh la mot chieu. Chu so ghi
trong c3p ngoac [ ] la so phan tu cua chieu do.
Vi du: f l o a t B[5] [5] ; //mang 2 chieu B, kich thude 5x5 chua cac so
thuc.
16
Cau true la tap hop cac mau du lieu khac nhau cua mot doi tugng (cac mau
du lieu co the co kieu khac nhau). Cac mau dir lieu do dugc goi la thanh
phan du lieu cua cau true. Cac cau true co the dugc sir dung de tao nen cac
kieu du lieu khac, chang han nhu mang cau true.
Gia su Ti, T2, ...,Tn la cac kieu da cho, va F1, F2, ..., Fn la cac ten thanh phan.
Khi do ta co the thanh lap kieu cau true vai n thanh phan du lieu, thanh phan
thu i co ten la Fj va co kieu Ti vai i = 1,2,..., n.
struct ST
{
T, F, ;
T2 F2 ;
Tn Fn ;
1 ;
ST si, s2, d [20] ;
Trong khai bao nay si, s2 la cac bien cau true, d la mot mang cau true gom
20 phan tir bat dau tir d[0] den d[ 19],
De truy nhap vao mot thanh phan du lieu cua mot cau true ta thuc hien theo
cu phap:
<ten bien cau triic>.<ten thanh phan>
Vidu: si.FI, d [2].Fn
Moi gia tri cua kieu cau true ST la mot bo n gia tri (ti, t2,..., tn), trong do
t, e Ti (i = 1, 2,..., n).
VI du: Khai bao cau true luu lift phiii sO gOm tCr s6 Vi UlSu s6 la CdC SO
nguyen
struct PhanSo
{
int tuso;
int mauso;
1 ;
llkhai bao cac bien lint trie phdn so
PhanSo pi, p2, ps[100];
.3.4.4. Cau true
ilAI THUAT
17
| 1/20

Preview text:

llllllllllllllllilll \
j DAI HOC CONG NGHlfiP HA NOl GT.0000026859 G I A O T R I N H
nhA xuAt bAn khoa hoc vA KY THUAT
TRUdNG £>AI HOC CONG NGHIEP HA NQI
AN VAN MINH - TRAN HUNG CUCJNG G I A O T R I M ! A I
NHA XUAT BAN KHOA HOC VA KY THUAT MUC LUC Trang
HNOI DAU ...................................................................................................................7 Chirong 1
TONG QUAN VE CAU TRUC DU LIEU VA GIAI THUAT
. VAI TRO CUA VIEC XAY Dl/NG CAU TRUC DU' LIEU.................................... 9
. CAC TIEU CHUAN DANH G1A CAU TRUC DU' LIEU........................................12
. CAC CAU TRUC DU' LIEU CO SCJ TRONG C/C++ ............................................ 13
1.3.1. Djnh nghTa kieu dir lieu....................................................................................14
1.3.2. Cac thuoc tinh cua mqt kieu dir lieu............................................................... 14
1.3.3. Cac kieu du lieu cor ban....................................................................................14
1.3.4. Cac kieu dir lieu co cau true ........................................................................... 15
1.3.5. Cac phep toan trong h? kieu C/C++...............................................................19
. g iAi t h u At - phAn tich vA d Anh g iA g iAi t h u At ...............................19
1.4.1. Giai thuat..........................................................................................................19
1.4.2. Bieu dien giai thuat ......................................................................................... 21
1.4.3. Phan tich giai thuat..........................................................................................21
1.4.4. Phan tich mpt so giai thuat.............................................................................. 28
TLUAN CHUNG....................................................................................................... 32
ITAPCHU'ONG 1 ..................................................................................................... 32 Chining 2 DE QUY VA GIAI THUAT DE QUY
K.HA1 N1EM VEDEQUY ....................................................................................... 34
g iAi t h u At d e q u y v A hAm d e q u y .......................................................... 34
2.2.1. Giai thuat d? quy ............................................................................................. 34
2.2.2. Ham de quy ..................................................................................................... 35
THIET K.E GlAl THUAT DE QUY ......................................................................... 36
2.3.1. Ham n !............................................................................................................. 36
2.3.2. Bai toan day s6 FIBONACCI.......................................................................... 37
2.3.3. Bai toan “Thap HaNoi” .................................................................................. 38
HIEU LQ'C CUA DE QUY....................................................................................... 40
ITAPCHU'ONG 2 ......................................................................................................42 3 Chiro'ng 3 DANH SACH TUYEN TINH
3.1. KHAlNIEM DANH SACH TUYEN TINH............................................................ 44
3.1.1. Khai niem ....................................................................................................... 44
3.1.2. Cac phep toan tren danh sach......................................................................... 44
3.2. LUlI TRU' KE TIEP CUA DANH SACH TUYEN TINH ...................................... 46
3.2.1. Thiet ke cau true dir lieu................................................................................. 46
3.2.2. Cai dat cac phep toan tren danh sach ............................................................. 48
3.2.3. Bai tap ap dpng............................................................................................... 54
3.3. DANH SACH MOC NOI ........................................................................................61
3.3.1. KiSu con tro va cac khai niem lien quan ........................................................ 61
3.3.2. Danh sach moc noi don .................................................................................. 66
3.4. DANH SACH NOI VONG .......................................................................................89
3.5. DANH SACH MOC NOI HAI CHIEU .................................................................... 90
3.5.1. Phep bo sung mQt nut m oi.............................................................................. 92
3.5.2. Loai bo mpt nut tren danh sach...................................................................... 93
3.6. UNO DUNG DANH SACH MOC NOI ...................................................................94
3.6.1. Giai thieu umg dung ........................................................................................94
3.6.2. Giai thuat.........................................................................................................95
3.7. STACK VA QUEUE ................................................................................................97
3.7.1. Stack (Ngan xep).............................................................................................97
3.7.2. Queue (Hang dpi).......................................................................................... 114
BAI TAP CHUONG 3 ................................................................................................... 125 Chirffng 4 CAY
4.1. CAY VACAC KHAI NIEM CO BAN ...................................................................131
4.1.1. Djnh nghTa..................................................................................................... 131
4.1.2. MQt so khai nipm ca ban .............................................................................. 132
4.2. CAYNH1 PHAN .................................................................................................... 133
4.2.1. Djnh nghTa..................................................................................................... 133
4.2.2. Tinh chat ....................................................................................................... 133
4.2.3. Bieu dien cay nhi phan .................................................................................. 134
4.2.4. Phep duyet cay nhi phan ............................................................................... 138
4.2.5. Cay nhj phan bi6u diin bieu thurc................................................................. 140 4
3. CAY NHI PHAN l i\1 KIEM ................................................................................ 142
4.3.1. Djnh nghTa......................................................................................................142
4.3.2. Cai dat cay nhj phan tim kiem........................................................................143
4.3.3. Cac thao tac ca ban tren cay nhj phan tim kiem ............................................144
4.3.4. Thai gian thirc hien cac phep toan tren cay nhi phan tim kiem . . . . . . . . . . 157
4. CAY CAN BANG (AVL TREE)............................................................................ 158
4.4.1. Cay can bang hoan toan (CCBHT) ................................................................159
4.4.2. Cay can bang................................................................................... ...........- 159
Al TAP CHU'ONG 4 ....................................................................................................166 Chirffng 5 SAP XEP VA TiM KIEM
I. cA c PHU’ONG PHAP SAP X EP.......................................................................... 169
5.1.1. Khai niem sap xep ..........................................................................................169
5.1.2. Ba plurang phap sap xep ca ban................................................................... 170
5.1.3. Phircmg phap phan doan ............................................................................... 184
5.1.4. Phutmg phap vun dong ................................................................................. 191
5.1.5. Phirong phap trpn .......................................................................................... 201
5.1.6. Bai tap ap dung.............................................................................................. 211
ET LUAN CHUNG..................................................................................................... 216
.2. TiM KIEM .............................................................................................................. 217
5.2.1. Bai toan tim kiem .......................................................................................... 217
5.2.2. Tim kiem tuan t p ........................................................................................... 217
5.2.3. Tim kiem nhj phan ........................................................................................ 221
5.2.4. Bai tap ap dpng.............................................................................................. 225
Al TAP CHU'ONG 5 ................................................................................................... 229
Al I.If.UTHAM KHAO...............................................................................................231 5 L O I N O I D A U
A lgdy nay cong nghe thong tin duqc ung dung rong rai trong moi ITnh
1 V vice cua ddi song xa hoi. Viec xdy dung cac he thong phan mem ung
dung de gidi quyet yeu cdu thay the cho con nguoi trd nen pho bien hon bao
gia het. Tuy nhien, day luon la mot viec het sue kho khan trong moi giai
doqn phat trien, trong do co mot giai doan het sue quan trong do la thiet ke
cdu true dir lieu he thong va cac gidi thuat gidi quyet cac yeu cdu.
Cuon gido trinh ‘Cau true dir lieu va giai tliuat " ra dai phdn nao giup sinh

vien, nhieng nha phat trien phdn mem trong tuomg lai co duqc nhung kien
thicc co ban ban ddu cho van de lira chon, xay dung cdu true dir lieu cung
nhu cac gidi thuat. Gido trinh nay la tai lieu hoc tap cua mot mon hoc co so
cung ten trong Chuong trinh ddo tao ky su cong nghe thong tin. Noi dung
gido trinh trinh bay nhieng kien thirc co ban ve cdu true dir lieu va ede gidi
thuat xir ly lien quan, giup sinh vien nhqn thirc duqc van de thiet ke vd lua
chon cdu true dir lieu vd cac gidi thuat, mot giai doan quan trong trong quy trinh phdt trien phdn mem.
De hoc tot mon hoc nay, doi hoi sinh vien phai thanh thao It nhat mot ngon

ngir lap trinh co ban nhu Pascal, C/C++ ... . thanh thao cac ky thuat lap
trinh nhu: cdu true re nhanh, cdu true lap, ky thuat lap trinh don the (sic dung ham).
NOt dung gido trinh duqc chla lam 5 chuong:

• Chuong 1. Tong quan ve cdu true die lieu vd gidi thuat, bao gom cac
khdi niem ve cdu true dir lieu vd gidi thuat, moi quan he giua chung, van
de thiet ke cdu true dir lieu, thiet ke vd phdn tich gidi thuat, danh gia do
phirc tap cua gidi thuat.
• Chuong 2. De quy vd gidi thuat de quy, mot phuong phap thiet ke gidi
thuat khd quan trong, nhat la vdi cac gidi thuat bieu dien cac thao tac xtir
iy cdu true die lieu dang cay. 7
Chuffng 3. Danh sach tuyen tinh, mot lo'ai cdu true dir lieu rat pho bien
trong cac bai loan tin hoc. Trong chuong nay chung toi trinh bay cac
phuong phap luu trie danh sdeh vd cac thao tac xic ly tuemg ung vdi moi loai danh sdeh.
• Chuffng 4. Cay, mot dang cdu true die lieu phi tuyen tinh, chuong nay
chu yeu noi ve cay nhi phdn vd cac ung dung cua chung.
• Chuffng 5. Sap xep vd tim kiem, tap trung vao van de mo ta, thiet ke vd
danh gia cac gidi thudt sap xep vd tim kiem thong dung, cung nhu van de
cai dat cac gidi thudt nay trong bai toan ung dung.
Cac chuong trinh ung dung vd bai tap trong moi chuong da duoc chon loc
d mice do phu hop ddi vdi sinh vien, qua do sinh vien hieu sau sac them ve
bai giang, cimg cd them ve ky thudt chi dat chuong trinh vd nam bat duoc
mot so kien thirc khdng duoc true tiep gioi thieu trong gido trinh.
Trong qua trinh bien soan gido trinh nay, chung toi da nhan duoc rat nhieu
y kien dong gop ve noi dung tic phia ede dong nghiep. Chung toi xin chan thanh cam on.
Mac dii da cd gang rat nhieu trong khi bien soan, nhung cung khdng the

tranh khoi nhung thieu sot. Chung toi mong muon nhan duoc nhung y kien
dong gop, chinh sica de noi dung cua gido trinh duoc hoan thien hon trong nhung Ian tai ban sau.
Moi y kien dong gop xin giri ve Khoa Cong nghe thong tin - Truong Dai hoc

Cong nghiep Ha Noi, hoac giri vao hop thu dien tic: anvanminh 78@yahoo. com. NHOM TAC GIA
An Van Minli - Tran Ilung Cirung 8 Chmmg 1
TONG QUAN VE CAU TRUC DU LIEU VA GIAI THUAT
Ghuang nay dua ra cac khai niem: Cau true dir lieu, giai thuat va moi quan
he giira chung. Ben canh do ta cung dua ra ky thuat de danh gia do phuc tap
cua thuat toan va giai thieu cac cau true dir lieu ca ban.
,1. VAI TRO CUA VIEC XAY Dl/NG CAU TRUC DU' LIEU
Xay dung mot he thong phan mem la chuyen bai toan thuc te thanh bai toan
co the giai quyet tren may tinh. Bat ky bai toan nao cung bao gom cac doi
tugng du lieu va cac thao tac xu ly tren cac doi tuomg do. Do do, de xay
dung mot mo hinh tin hoc phan anh dugc bai toan thuc te can chu trong den hai van de: •
To chuc bieu dien ede ddi tuffng thuc te
Cac thanh phan du lieu thuc te rat da dang, phong phu va thuang chua dung
nhung quan he nao do vai nhau. Do do, trong mo hinh tin hoc cua bai toan,
can phai bieu dien chung mot each thich hap nhat, de vira co the phan anh
chinh xac cac du lieu thuc te nay, vira co the de dang dung may tinh de xu
ly. Cong viec nay goi la xay d\mg can tn'ic dir lieu cho bai toAn. •
Xay dung cac thao tac xu ly du lieu
Tir nhung yeu cau xir ly trong thuc te, can tim ra cac giai phap tuang ung de
giai quyet yeu cau, moi giai phap can phai xac dinh trinh tu cac thao tac
may tinh can thi hanh de cho ra ket qua mong muon. Day la buac xay dung
giai thuat cho bai toan. Giai thuat phan anh cac phep xu ly, con doi tugng xir
ly cua giai thuat lai la du lieu. Chinh du lieu chua dung cac thong tin can
thiet de thuc hien giai thuat. De xac dinh dugc giai thuat phu hop ta can phai
biet no tac dong den loai du lieu nao va khi lua chon cau true du lieu cung 9
can phai hieu ro nhung thao tac nao tac dong len du lieu do. Nhu vay trong
mot chucrng trinh, cau true du lieu va giai thuat co moi quan he chat che veri
nhau, dugc the hien qua cong thuc sau:
Cau true dir lieu + Giai thuat = Chirong trinh
Chang han khi dua ra khai niem tap hop thi ngucri ta dinh nghTa cac phep
toan tren tap hop do (phep hop, phep giao, phep trir,...), hay khi dua ra khai
niem menh de ta cung phai dinh nghTa cac phep toan: phep hoi, phep tuyen,
keo theo,... trong ngon ngu lap trinh cung tuang tu nhu vay: vi du khi djnh
nghTa kieu nguyen thi ta phai chi ra pham vi bieu dien trong 2 byte vai mien
gia tri tu -32768 den +32767 va cac thao tac tren kieu du lieu nay trong do
co phep chia lay du. Tuy nhien khi dinh nghTa kieu so thuc thi lai khong co phep toan nay.
Vai mot cau true dir lieu da chon, se co nhung giai thuat tuang ung, phu
hap. Khi cau true du lieu thay doi thuang giai thuat cung phai thay doi theo
de tranh viec xu ly gugng ep, thieu tu nhien tren mot cau true khong phu
hap. Han nua, mot cau true du lieu tot se giup giai thuat xu ly tren do co the
phat huy tac dung tot han, vira nhanh vira tiet kiem, giai thuat cung don gian va de hieu han.
Vi du 1.1: Mot chuang trinh quan ly diem thi cua sinh vien can luu cac
diem so cua 3 sinh vien. Do moi sinh vien co 4 diem so tuang ung vai 4
mon hoc khac nhau nen du lieu co dang nhu sau:
Bang 1.1. Bieu diin du lieu diem cua cac sinh vien Sinh vien Mon 1 Mon 2 Mon 3 Mon 4 SVI 8 7 7 5 SV2 5 4 3 8 SV3 8 6 6 7
Xet thao tac xu ly la xuat diem so cac mon cua timg sinh vien.
Gia sir co cac phuang an to chuc luu tr£r nhu sau:
Phuang an 1: Sit dung mang mot chieu:
Co tat ca 3(SV) * 4(Mon) = 12 diem so can luu tru, do do ta khai bao mang nhu sau: 0 i n t a [12];
Khi do mang a cac phan tir se dugc luu tru nhu sau: 8 7 7 5 5 4 3 8 8 6 6 7 k— ___-yv.__ ____J V__ ___ ^ V* Y SV1 SV2 SV3
Va truy xuat diem so mon j cua sinh vien i la phan tu tai dong i cot j trong
bang. Be truy xuat din phin tu nay ta phai sir dung cong thuc xac dinh chi so tuang ung trong mang a:
Bang diem (dong i, cot j) => a[ i *so cot + j ]
Ngugc lai, vai mot phan tu bat ky trong mang, muon biet do la diem so cua
sinh vien nao, mon gi, phai dung cong thuc xac dinh sau:
a[i] => bang diem (ddng(i/cot), cot (i % so cot))
Vai phuang an nay, giai thuat xir ly dugc cai dat nhu sau: void xuat ( int a []) {
int i, mon, so_mon = 4;
for (i = 0; i < 12; i++) 1 sv = i / so_mon; mon = i % so_mon;
cout<<"\nBiem mon: "«mon;
cout<<" cua sinh vien "«sv;
cout«" la: " « a[i]«endl; 1 1
Phuang an 2: Sir dung mang hai chieu:
Khai bao mang hai chieu a co kich thuac 3 dong * 4 cot nhu sau: i n t a [ 3][4] ;
Bang 1.2. Luu dir lifu diem sinh vien bang mang hai chieu Cat 1 Cm2 Cat 3 Cpt 4 Dong 1 a[l][l] = 7 a[l][2] =9 a[l][3] = 7 a[l][4] = 5 Ddng 2 a[2][l]= 5 a[2][2] = 4 a[2][3] = 2 a[2][4] = 7 Dong 3 a[3][l] = 8 a[3][2] = 9 a[3][3] = 6 a[3][4] = 7 11
Va truy xuat diem so mon j cua sinh vien i la phan tur tai dong i cot j trong
bang cung chinh la phan tir d dong i cot j trong mang.
Bang diem (dong i, cot j) => a[ij]
Vdi phuang an nay, giai thuat xir ly dupe cai dat nhu sau:
void Xuat ( int a [4] [3]) {
int i, j, so_sv = 3, so_mon = 4;
for (i = 0; i <= so_sv; i++) {
for (j = 0; j <= so_mon; j++) cout«"\nDiem mon: "<
cout«" cua sinh vien "«i;
cout<<" la: " « a [ i ] [j]«endl; } } 1 Nhan xet:
Co the thay ro phuang an 2 cung cap mot cau true luu tru phu hop vdi du
lieu thuc te han phuang an 1, va do vay giai thuat xu ly tren cau true du lieu
ciia phuang an 2 cung dan gian han, tu nhien han.
1.2. CAC TIEU CHUAN DANH GIA CAU TRUC Dff LIEU
Do tarn quan trong cua cau true du lieu da dupe trinh bay trong phan tren,
nen nhat thiet phai chu trpng den viec lua chon mot phuang an to chirc du
lieu thich hap cho bai toan. Mot cau true du lieu tot phai thoa man cac tieu chuan sau:
* Phdn anh dung thuc te: Day la tieu chuan quan trpng nhat, quyet dinh
tinh dung dan cua toan bo bai toan. Can xem xet ky luang cung nhu dir
tru cac trang thai bien doi cua du lieu trong chu trinh song de co the lua
chon cau true du lieu luu tru the hien chinh xac doi tuang thuc te. 12
Vi du: Mot so tinh huong sau chon cau true luu tru sai
- Chon bien so nguyen kieu int de liru tru tien thuang ban hang (dugc
ti'nh theo cong thuc tien thuang ban hang = tri gia hang *5%), do vay khi
lam tron moi gia tri tien thuang se gay thiet hai cho nhan vien ban hang.
Truong hop nay phai sir dung bien so thuc de phan anh dung ket qua cua cong thuc ti'nh thuc te.
- Trong truang trung hoc, moi lop co the nhan toi da 25 hoc sinh. Lap hien
co 20 hoc sinh, moi thang, moi hoc sinh dong hoc phi 15.000 dong. Chon
mot bien so nguyen (kha nang luu tru -32768 + 32767) de luu tru tong so
hoc phi cua lap hoc trong thang, neu xay ra truang hap co them 5 hoc
sinh nua vao lap thi gia tri tong hoc phi thu dugc la 375000 dong, vugt
kha nang luu tru cua bien da chpn, gay ra tinh trang tran so va sai lech.
Phu hffp v&i cac gidi thuat xu ly tren do: Tieu chuan nay giup tang hieu
qua cua bai toan, vi?c phat trien cac giai thuat dan gian, tu nhien han va
chucmg trinh dat hieu qua cao han ve toe do xir ly.
Tiet kiem tdi nguyen he thong: Cau true du lieu chi nen sir dung tai
nguyen vira du de dam nhiem dugc chuc nang cua no. Tieu chuan nay
nen can nhac tuy vao tinh huong cu the khi thuc hien bai toan. Neu to
chuc sir dung bai toan can co nhung xir ly nhanh thi khi chon cau true du
lieu yeu to tiet kiem thai gian xir ly phai dat nang han tieu chuan sir dung toi da bo nho, va ngugc lai.
Vi du: Mot so tinh huong chon cau true luu tru lang phi
- Sir dung bien int de luu tru mot gia trj cho biet thang hien hanh. Trong
tinh huong nay ta chi can sir dung bien kieu byte la du.
- Be luu tru danh sach hoc vien trong mot lap, su dung mang 60 phan tir
(giai han so hgc vien trong lap toi da la 80). Neu so lugng hpc vien that
su it han 60, thi gay lang phi bo nha. Han nua, so hgc vien co the thay
doi theo timg ky, timg nam. Trong truang hop nay ta can co mot cau true
du lieu linh dong han mang, chang han danh sach moc noi.
.3. CAC CAU TRUC DU’ LIEU CO SO TRONG C/C+ +
May tinh thuc su chi co the luu tru du lieu a dang nhi phan tho so. NeU
muon phan anh dugc du lieu thuc te von rat da dang va phong phu, can phai 13
xay dung nhung phep anh xa, nhung quy tac to chuc plu'rc tap che len tang
du lieu tho, nham dua ra nhung khai niem logic ve hinh thuc luu tru khac
nhau thucrng dugc goi la kieu die lieu. Nhu da phan tich a phan dau, giua
hinh thuc luu tru va cac thao tac xir ly tren do co quan he mat thiet vdi nhau.
Tir do co the dua ra mot dinh nghia cho kieu du lieu nhu sau.
1.3.1. Djnh nghTa kieu dl' lieu
Kieu du lieu T dugc xac djnh bai bo , vai :
- V: tap cac gia trj hop le ma doi tugng kieu T co the luu tru.
- O: tap cac thao tac xir ly co the thi hanh tren doi tugng kieu T. Vi du:
- Kieu du lieu Ky tu alphabet = vai Vc = {a -> z, A -> Z}
Oc = {Lay ma ASCII cua ky tu, bien doi ky tu thudng thanh ky tu hoa,...}
- Kieu du lieu So nguyen = V, = {-32768 -> 32767}
Oj = {+, *, /, %, cac phep so sanh, ...}
Nhu vay, muon su dung mot kieu du lieu can nam vung ca noi dung du lieu
dugc phep luu tru va cac xu ly tac dong tren do.
1.3.2. Cac thuoc tinh cua mot kieu du' lieu
Mot kieu du lieu bao gom cac thuoc tinh sau : - Ten kieu dO lieu - Mien gia trj - Kich thude luu tru
- Tap cac toan tu tac dong len kieu du lieu.
1.3.3. Cac kieu du' lieu cd ban
Thong thudng trong mot he kieu cua ngon ngu lap trinh se co mot so kieu du
lieu dugc goi la kieu die lieu dan hay kieu du lieu nguyen tic (atomic).
Thong thudng, cac kieu du lieu ca ban bao gom:
- Kieu co thu tu rdi rac: so nguyen, ky tu, liet ke. - Kieu khong rdi rac: so thuc. 14
Tuy timg ngon ngu lap trinh, cac kieu dir lieu dinh nghTa san nay co the khac
nhau. Chang han, vdi ngon ngir C/C++, cac kieu dir lieu nay chi gom so
nguyen, so thuc, ky tu. Va theo quan diem cua C/C++, kieu ky tu thirc chat
cung la kieu so nguyen ve mat luu tru, chi khac ve each sir dung.
Bailg 1.3. He kieu ciia C/C++ Ten kieu Pham vi Kich thuoc Giai thich int -32768 -> +32767 2 bytes So nguyen char -128 ->+127 1 byte co dau long -2147483648 -> +2147483647 4 bytes unsigned char 0 -> 255 1 byte So nguyen unsigned int 0-> 65535 2 bytes khong dau unsigned long 0 -> 4294967259 4 bytes float 1.2*1 O'38 -> 3.4* I038 4 bytes So thirc fouble 2.2*1 O'308 -> 1.8*10308 8 bytes (dau cham dong) long double
3.5* 1 O'3942 - > 3.4* 104932 10 bytes
L.3.4. Cac kieu du" lieu co cau true
Khi giai quyet cac bai toan phirc tap, neu ta chi sir dung cac du ca sd la
khdng du, do do phai can den cac kieu du lieu co cau true. Chang han thong
tin cua mot sinh vien bao gom: ma sinh vien (so nguyen), ho ten sinh vien
(chuoi), nam sinh (sd nguyen), que quan (chuoi). Trong trudng hap nay ta
khdng thd dung kieu du lieu ca ban dugc ma phai ket hop chung lai vdi nhau
de tao nen kieu du lieu cd cau true. Mot cau true dir lieu bao gom mot tap
hop cac die lieu nguyen tic, cac thanh phan nay ket hop vdi nhau theo mot
phuang thuc dugc quy dinh bdi ngon ngu lap trinh. Da sd cac ngon ngu lap
trinh ddu cai dat san mot sd kieu cd cau true ca ban nhu mang, chuoi, tap tin,
cdu true... va cung cdp ca che cho ngudi lap trinh tu dinh nghTa kieu du lieu mdi.
f.3.4.1. Mang mot chieu
Trong C/C++ va trong nhieu ngon ngu thong dung khac cd mot each dan
gian nhat de tao va moc noi cac ddi tugng trong mot tap hop, do la each sap
xep cac doi tugng do thanh mot day. Be luu tru day ddi tugng trong may
tinh ngudi ta sir dung mang mot chieu. Khi do ta cd mot cau true du lieu
dugc goi la mang. Nhu vay, cd the noi mot mang la mot cau true du lieu 15
gom mot day xac dinh cac du lieu thanh phan cung mot kieu (mang so
nguyen, mang so thuc, mang cac cau true ,...).
Trong C/C++ viec khai bao mot mang kha dem gian, can chi ra kieu du lieu
cua phan tu, ten mang, kich thuac mang, mau nhu sau: <[kich thiruc^;
Vi du: i n t a [ 10 ] ; //khai bao mang a chua 10 so nguyen. I.3.4.2. Chudi
Trong C/C++, chuoi thuc chat la mot mang cac ky tu, tuy nhien co khac la
trong chuoi co chua ky tu ket thuc ky hieu la ‘\0’. Viec nhap va hien thi
chuoi cung don gian han mang, ta co the su dung cac ham nhap xuat chuan
trong thu vien “stdio.h” nhu scanf (), gets(), cout«), puts (),...
C/C++ cung dinh nghTa mot so ham xu ly chuoi (thu vien string.h) nhu:
strcpyO, strlenO, strcmpO, strchrO, strcat(), strstr ()...
1.3.4.3. Mang nhieu chieu
Mang nhieu chieu dugc sir dung nhieu nhat la mang 2 chieu, co the hinh
dung mang 2 chieu giong nhu mot bang gom cac dong va cac cot, chang han,
bang ghi nhiet do trung binh trong 5 nam a nam thanh pho.
Bang 1.4. Du- lifu tlioi tiet cic thanh pho 2003 2004 2005 2006 2007 Ha Nqi 27 27,5 28,5 30 27 TP. HoChiMinh 32,5 32 30,5 31 30 Hue 30 31 32 28 29 Hai Phong 27,5 26,5 26 27,5 27 Ha Long 25 27 26 28 27
Cau true khai bao cua mang nhieu chieu dugc viet nhu sau:
<[kich thuac chieu 1 ],...,[kich thuac chieu n]>;
Sau ten mang, moi cap ngoac vuong [ ] dugc tinh la mot chieu. Chu so ghi
trong c3p ngoac [ ] la so phan tu cua chieu do.
Vi du: f lo a t B[5] [5] ; //mang 2 chieu B, kich thude 5x5 chua cac so thuc. 16 .3.4.4. Cau true
Cau true la tap hop cac mau du lieu khac nhau cua mot doi tugng (cac mau
du lieu co the co kieu khac nhau). Cac mau dir lieu do dugc goi la thanh
phan du lieu cua cau true. Cac cau true co the dugc sir dung de tao nen cac
kieu du lieu khac, chang han nhu mang cau true.
Gia su Ti, T2, ...,Tn la cac kieu da cho, va F1, F2, ..., Fn la cac ten thanh phan.
Khi do ta co the thanh lap kieu cau true vai n thanh phan du lieu, thanh phan
thu i co ten la Fj va co kieu Ti vai i = 1,2,..., n. struct ST { T, F, ; T2 F2 ; Tn Fn ; 1 ; ST si, s2, d [20] ;
Trong khai bao nay si, s2 la cac bien cau true, d la mot mang cau true gom
20 phan tir bat dau tir d[0] den d[ 19],
De truy nhap vao mot thanh phan du lieu cua mot cau true ta thuc hien theo cu phap: . Vidu: si.FI, d [2].Fn
Moi gia tri cua kieu cau true ST la mot bo n gia tri (ti, t2,..., tn), trong do t, e Ti (i = 1, 2,..., n).
VI du: Khai bao cau true luu lift phiii sO gOm tCr s6 Vi UlSu s6 la CdC SO nguyen struct PhanSo { int tuso; int mauso; 1 ;
llkhai bao cac bien lint trie phdn so PhanSo pi, p2, ps[100]; ilAI THUAT 17
C) day, p i, p2 la hai bien cau true liru tru mot phan so, con ps la mang luu tru
mot day nhieu nhat la 100 phan so, ps dugc goi la mang cau true.
1.3.4.5. Kieu con tro
Mot phuang phap quan trong nua de kien tao cac cau true du lieu, do la sir dung con tro.
Con tro la bien dugc su dung de luu dia chi cua mot bien khac.
Con tro dugc khai bao theo mau: * ; V rd u r in t *p, x = 30, y ;
p = &x; // p chua dia chi cua bien x, hay p tro vao x
y = *p; IITruy xuat den vung nha ma con tro p dang tro den (y = 5) x P 30
Hinh /./. Bieu dien con tro
Sau nay con tro dugc dung de tao ra kieu danh sach moc noi, hoac cay la
cac cau true du lieu rat quan trgng, ta se tim hieu ky han each sir dung con tro trong chuang 3.
1.3.4.6. Kieu file (tep tin)
Khac vai cac kieu du lieu truac day, so nguyen, so thuc, mang, chuoi.. du
lieu dugc luu a bo nha trong. Vi the, khi chuang trinh ket thuc, du lieu cung
bi xoa. De khac phuc truang hgp nay, du lieu can dugc luu a bo nha ngoai, do la cac tep tin.
- Theo each luu tru nay, khi thao tac can mot ten tep tin (gom ca duong
dan), mot con tro tep (FILE * ten_con_tro).
- Khi thao tac vai tep tin cung can cac ham xir ly, ban doc co the tim hieu
trong cuon sach “Ngon ngu lap trinh C”, tac gia Quach Tuan Ngpc, Nha xuat ban Thong ke. 18