Professional Documents
Culture Documents
CU TRC D LIU V
GII THUT (501040)
B
F
D
E
G
K
H
Gii thiu
Mn hc gii thiu:
Cc cu trc d liu c bn
Cc gii thut in hnh trn cc cu trc d liu
Gii thiu mn hc
Ni dung
Chng 1. Tng quan
Chng 2. Stack
Chng 3. Queue
Chng 4. qui
Chng 5. List v String
Chng 6. Cy nh phn
Chng 7. Tm kim
Chng 8. Sp xp
Gii thiu mn hc
Mt s thut ng cn bn
Mt chng trnh my tnh (computer program)
l tp cc cu lnh iu khin mt my tnh
sinh ra mt kt qu c th
Vit cc chng trnh my tnh gi l lp trnh
my tnh (computer programming)
Ngn ng to cc chng trnh my tnh gi
l ngn ng lp trnh
Software l mt chng trnh hay tp hp cc
chng trnh
Programming Fundamentals
H Bch Khoa Tp.HCM
4
Gii thiu mn hc
Ngn ng my
Cp thp nht. Cc chng trnh bao gm 0, 1.
Lp trnh bng ngn ng my c th iu khin
trc tip n phn cng my tnh
V d
00101010 000000000001 000000000010
10011001 000000000010 000000000011
Instruction part
address parts (a ch b nh
(opcode tc v
ca d liu
c thc hin)Programming Fundamentals
5
Gii thiu mn hc
Assembly languages
Thc hin cng nhim v ngn ng my nhng
s dng tn tng trng cho opcode v cc
ton t thay v 1, 0
LOAD BASEPAY
ADD OVERPAY
STORE GROSSPAY
Chng trnh ngn ng assembly phi c
dch sang ngn ng my trc khi c th thc
thi bi my tnh
Programming Fundamentals
H Bch Khoa Tp.HCM
6
Gii thiu mn hc
Assembler
Assembly
language
program
Translation
program
(assembler)
Programming Fundamentals
H Bch Khoa Tp.HCM
Machine
language
program
7
Gii thiu mn hc
Programming Fundamentals
H Bch Khoa Tp.HCM
8
Gii thiu mn hc
Programming Fundamentals
H Bch Khoa Tp.HCM
9
Gii thiu mn hc
10
Gii thiu mn hc
10
PROGRAMMING LANGUAGES
Mt s ngn ng thng dng
FORTRAN
COBOL
BASIC
PASCAL
C
C++
Java
1957
1960s
1960s
1971 Structure programming
Object-oriented programming
C php (syntax)
C php ca mt ngn ng lp trnh l tp cc lut vit cc cu
lnh chnh xc
Programming Fundamentals
H Bch Khoa Tp.HCM
11
Gii thiu mn hc
11
Programming Fundamentals
H Bch Khoa Tp.HCM
12
Gii thiu mn hc
12
13
Gii thiu mn hc
13
Gii thut
Dng C++ din t? c vn
C th din t gii thut bng cch s dng
flowchart
Flow chart th hin nt pht tho cu trc cn bn v
tnh logic ca chng trnh
Mt cch khc din t gii thut l s dng m
gi pseudocode
Gi lp, thng l d hiu, khng chi tit n cc k thut
lp trnh
cp ht sc tng qut: gn ngn ng t nhin
Hoc rt chi tit: nh dng ngn ng ta Pascal, ta C++
Programming Fundamentals
H Bch Khoa Tp.HCM
14
Gii thiu mn hc
14
Gii thiu mn hc
15
Flowchart symbols
Terminal
Input/output
Connector
Process
Flowlines
Predefined process
Decision
Programming Fundamentals
H Bch Khoa Tp.HCM
16
Gii thiu mn hc
16
Example
Start
Input Name,
Hours, Rate
Calculate
Pay Hours Rate
Dislay
Name, Pay
End
Programming Fundamentals
H Bch Khoa Tp.HCM
17
Gii thiu mn hc
17
Algorithms in pseudo-code
S dng cc cm t nh ting Anh m t
pseudocode.
Example:
Input the three values into the variables Name,
Hours, Rate.
Calculate
Pay = Hours Rate.
Display Name and Pay.
Programming Fundamentals
H Bch Khoa Tp.HCM
18
Gii thiu mn hc
18
Loops
Note:
1.Loop is a very important
concept in programming.
Start
NUM 4
SQNUM NUM2
Print
NUM, SQNUM
NUM NUM + 1
do
SQNUM NUM2
No
NUM> 9?
Yes
STOP
Programming Fundamentals
H Bch Khoa Tp.HCM
19
Gii thiu mn hc
19
Gii thut 2
Gii thiu mn hc
20
void BubbleSort(list A)
{
int i, j;
for (i=0; i < n-2; i++)
for (j=0; j<(n-2-i); j++)
if (A[j+1] < A[j]) {
tmp := A[j]; A[j] := A[j+1];
A[j+1] := tmp;
}
}
Gii thiu mn hc
21
So snh m gi v NNLT
Nhn xt:
M gi 1: gn vi cch trao i ca con ngi nht
nhng kh lp trnh nht
M gi 2: d lp trnh hn
Phng php:
u tin: cch gii quyt vn bng my tnh s
(gii thut bng m gi)
Sau : ngn ng lp trnh c th
Hc:
Nh gii thut (m gi)
Dng NNLT c th minh chng
H Bch Khoa Tp.HCM
Gii thiu mn hc
22
Gii thiu mn hc
23
Gii thiu mn hc
24
Gii thiu mn hc
25
Gii thiu mn hc
26
Cu trc d liu
(1) L mt cch t chc v lu tr d liu hp l s dng
mt cch hiu qu,
(2) Tp cc thao tc truy cp cc thnh phn d liu.
V d:
Mng (Array)
Danh sch lin kt (Linked List)
Ngn xp (Stack)
Hng i (Queue)
Cy (Tree)
Gii thiu mn hc
27
Gii thiu mn hc
28
Gii thiu mn hc
29
c im ca OOP
Tnh bao ng:
Che du cu trc d liu bn trong.
Che du cch thc hin thc i tng.
K tha:
nh ngha thm cc d liu v phng thc cn
thit t mt class c sn.
Cho php override/overload.
Cho php dng thay th v kh nng dynamic biding.
Bao gp:
Mt i tng cha nhiu i tng khc.
H Bch Khoa Tp.HCM
Gii thiu mn hc
30
Cu trc ca i tng
Internal data
Internal function
method
Internal function
method
method
Gii thiu mn hc
31
khai bo mt lp mi
khai bo d liu bn trong
constructor
copy constructor
destructor
overload assignment operator
phng thc (hnh vi)
khai bo mt i tng
gi phng thc
Gii thiu mn hc
32
Gii thiu mn hc
33
Gii thiu mn hc
34
A
C
CU TRC D LIU V
GII THUT (501040)
B
F
D
E
Chng 2: Stack
G
K
H
M t stack
Mt stack l mt cu
trc d liu m vic
thm vo v loi b
c thc hin ti
mt u (gi l nh
top ca stack).
L mt dng vo sau
ra trc LIFO (Last
In First Out)
Gii thiu mn hc
36
V d v stack
Stack rng:
y (push) Q vo:
y A vo:
Q
A
Ly (pop) ra mt => c A:
Gii thiu mn hc
37
Gii thiu mn hc
38
Nhp 5
5
1
1
Ly ra => 3
Ly ra => 7
3
7
5
1
5
1
Ly ra => 5
5
1
Nhp 7
Nhp 3
3
7
5
1
5
1
Ly ra => 1
Stack rng
Ngng
1
Gii thiu mn hc
39
s dng STL
(Standard Template Library)
khai bo mt stack c kiu d liu
ca cc phn t bn trong l double
y mt s vo trong stack
kim tra xem stack c khc rng khng
ly gi tr trn nh ca stack ra,
stack khng i
ly gi tr trn nh ca stack ra khi stack,
nh ca stack by gi l gi tr k tip
Gii thiu mn hc
40
N2: Mt dy ca kiu T
c chiu di bng 0 l rng
c chiu di n (n>=1): b th t (Sn-1, t)
Sn-1: dy c chiu di n-1 thuc kiu T
t l mt gi tr thuc kiu T.
Gii thiu mn hc
41
Gii thiu mn hc
42
Thit k stack
enum Error_code {fail, success, overflow, underflow};
template <class Entry>
class Stack {
public:
Stack();
//constructor
bool empty() const;
//kim tra rng
Error_code push(const Entry &item);
//y item vo
Error_code pop();
//b phn t trn nh
Error_code top(Entry &item);
//ly gi tr trn nh
//khai bo mt s phng thc cn thit khc
private:
//khai bo d liu v hm ph tr ch ny
};
Gii thiu mn hc
43
Gii thiu mn hc
44
Gii thiu mn hc
45
Gii thiu mn hc
46
y mt phn t vo stack
Gii thut:
1. Nu cn ch trng trong stack
1.1. Tng v tr nh ln 1
1.2. Cha gi tr vo v tr nh ca stack
1.3. Tng s phn t ln 1
7
top
5
1
count=3
count=2
Gii thiu mn hc
47
top
7
5
1
count=2
count=3
Gii thiu mn hc
48
Gii thiu mn hc
49
Ly gi tr trn nh stack
Gii thut:
1. Nu cn phn t trong stack
1.1. Tr v gi tr ti v tr nh
M C++:
template <class Entry>
Error_code Stack<Entry>:: top(Entry &item) {
if (count == 0)
return underflow;
else
item = entry[count - 1];
return success;
}
H Bch Khoa Tp.HCM
Gii thiu mn hc
50
Gii thiu mn hc
51
Gii thiu mn hc
52
2
8
Ton t ?
Ton t ?
Nhp vo 3 Nhp vo 5
Ton t +
Ly ra 5 v 3
Tnh 3 + 5 => 8
2
8
Ton t ? Ton t *
Nhp vo 2 Ly ra 2 v 8
Tnh 8 * 2 => 16
H Bch Khoa Tp.HCM
5
3
16
y vo 16
y 8 vo
16
Ton t =
In ra 16
Gii thiu mn hc
53
Gii thiu mn hc
54
Gii thiu mn hc
55
Gii thiu mn hc
56
Gii thiu mn hc
57
Gii thiu mn hc
58
A
C
CU TRC D LIU V
GII THUT (501040)
B
F
D
E
Chng 3: Queue
G
K
H
M t queue
Mt queue l mt cu trc d liu m vic thm vo c thc
hin mt u (rear) v vic ly ra c thc hin u cn li
(front)
Phn t vo trc s ra trc FIFO (First In First Out)
Gii thiu mn hc
60
Gii thiu mn hc
61
Thit k queue
enum Error_code {fail, success, overflow, underflow};
template <class Entry>
class Queue {
public:
Queue();
//constructor
bool empty() const;
//kim tra rng
Error_code append(const Entry &item); //y item vo
Error_code serve();
//b 1 phn t u
Error_code retrieve(Entry &item);
//ly gi tr u
//khai bo mt s phng thc cn thit khc
private:
//khai bo d liu v hm ph tr ch ny
};
Gii thiu mn hc
62
Gii thiu mn hc
63
M rng queue
C thm cc tc v:
Kim tra y (full)
Tnh kch thc (size)
Gii phng queue (clear)
Ly gi tr u v b ra khi queue (serve_and_retrieve)
M C++:
template <class Entry>
class Extended_queue: public Queue<Entry> {
public:
C cc kh nng public,
bool full( ) const;
protected, private
int size( ) const;
void clear( );
Error_code serve_and_retrieve(Entry &item);
};
H Bch Khoa Tp.HCM
Gii thiu mn hc
64
Gii thiu mn hc
65
Queue lin tc
Dng mt array: C xu hng di v cui array
Hai cch hin thc u tin:
Khi ly mt phn t ra th ng thi di hng ln mt v tr.
A
Ban u
Ly ra 1 phn t:
di tt c v trc
Thm vo 1 phn t
Ban u
Ly ra 1 phn t
Thm vo 1 phn t:
di tt c v trc
trng ch thm vo
Gii thiu mn hc
66
Gii thiu mn hc
67
Tnh ton v tr k:
i = ((i + 1) == max) ? 0 : (i + 1);
if ((i + 1) == max) i = 0; else i = i + 1;
i = (i + 1)%max;
Gii thiu mn hc
68
Gii thiu mn hc
69
Gii thiu mn hc
70
Gii thiu mn hc
71
Gii thiu mn hc
72
Thm mt gi tr vo queue
Gii thut:
1. Nu hng y
1.1. Bo li overflow
2. Tnh ton v tr cui mi theo array vng
3. Gn gi tr vo v tr cui mi ny
4. Tng s phn t ln 1
4. Bo success
front
A
rear
B
Gii thiu mn hc
73
front
A
rear
B
Gii thiu mn hc
74
Thm/loi mt gi tr M C++
template <class Entry>
Error_code Queue<Entry>::append(const Entry &item) {
if (count >= maxqueue) return overflow;
count++;
rear = ((rear + 1) == maxqueue) ? 0 : (rear + 1);
entry[rear] = item;
return success;
}
template <class Entry>
Error_code Queue<Entry>::serve() {
if (count <= 0) return underflow;
count;
front = ((front + 1) == maxqueue) ? 0 : (front + 1);
return success;
}
H Bch Khoa Tp.HCM
Gii thiu mn hc
75
Gii thiu mn hc
76
};
Gii thiu mn hc
77
Gii thiu mn hc
78
Gi lp phi trng X l
Runway_activity Runway::activity(int time, Plane &moving) {
Runway_activity in_progress;
if (!landing.empty( )) {
landing.retrieve(moving);
in_progress = land;
landing.serve( );
} else if (!takeoff.empty( )) {
takeoff.retrieve(moving);
in_progress = takeoff;
takeoff.serve( );
} else
in_progress = idle;
return in_progress;
}
Gii thiu mn hc
79
Gi lp phi trng Gi lp
for (int current_time = 0; current_time < end_time; current_time++) {
int number_arrivals = variable.poisson(arrival_rate);
for (int i = 0; i < number_arrivals; i++) {
Plane current_plane(flight_number++, current_time, arriving);
if (small_airport.can_land(current_plane) != success)
current_plane.refuse( );
}
int number_departures = variable.poisson(departure_rate);
for (int j = 0; j < number_departures; j++) {
Plane current_plane(flight_number++, current_time, departing);
if (small_airport.can_depart(current_plane) != success)
current_plane.refuse( );
}
Plane moving_plane;
switch (small_airport.activity(current_time, moving_plane)) {
case land: moving_plane.land(current_time); break;
case takeoff: moving_plane.fly(current_time); break;
case idle: run_idle(current_time);
}
}
H Bch Khoa Tp.HCM
Gii thiu mn hc
80
A
C
CU TRC D LIU V
GII THUT (501040)
B
F
D
E
Chng 4: qui
G
K
H
V d trn:
Giai tha ca n l 1 nu n l 0
Giai tha ca n l n * (giai tha ca n-1) nu n>0
H Bch Khoa Tp.HCM
Gii thiu mn hc
82
nh ngha qui:
n! =
1
n * (n-1)!
nu n=0
nu n>0
M C++:
int factorial(int n) {
if (n==0) return 1;
else
return (n * factorial(n - 1));
}
H Bch Khoa Tp.HCM
Gii thiu mn hc
83
n=2
3*factorial(2)
6
2
factorial (1)
n=1
2*factorial(1)
factorial (0)
1*factorial(0)
n=0
return 1;
1
1
Gii thiu mn hc
84
Gi hm
Gi hm
factorial(3) factorial(2)
Tr v t
Gi hm
Gi hm
hm
factorial(1) factorial(0) factorial(0
)
Tr v t
hm
factorial(1
)
Tr v t
hm
factorial(2
)
Tr v t
hm
factorial(3
)
t
Gii thiu mn hc
85
Bi ton Thp H ni
Lut:
Di chuyn mi ln mt a
Khng c t a ln ln trn a nh
Gii thiu mn hc
86
magic
Gii thiu mn hc
87
Gii thiu mn hc
88
Gii thiu mn hc
89
Gii thiu mn hc
90
V cy qui
Chiu cao cy nh hng lng b nh cn thit.
S nt l s ln bc chnh yu c thi hnh.
H Bch Khoa Tp.HCM
Gii thiu mn hc
91
Gii thiu mn hc
92
Gii thut:
product=1
for (int count=1; count < n; count++)
product *= count;
Gii thiu mn hc
93
Dy s Fibonacci
nh ngha:
F0 = 0
F1 = 1
Fn = Fn-1 + Fn-2 khi n>2
Gii thiu mn hc
94
Gii thiu mn hc
95
Dy s Fibonacci Kh qui
Nguyn tc:
Dng bin lu tr gi tr tnh ca Fn-2
Dng bin lu tr gi tr tnh ca Fn-1
Tnh Fn = Fn-1 + Fn-2 v lu li dng cho ln sau
Gii thut:
int Fn2=0, Fn1=1, Fn;
for (int i = 2; i <= n; i++) {
Fn = Fn1 + Fn2;
Fn2 = Fn1; Fn1 = Fn;
}
H Bch Khoa Tp.HCM
Gii thiu mn hc
96
A
C
CU TRC D LIU V
GII THUT (501040)
B
F
D
E
G
K
H
Gii thiu mn hc
98
Gii thiu mn hc
99
Ch s cc phn t
nh ch s mt danh sch c n phn t:
nh ch s t 0, 1, cc phn t
V d: a0, a1, a2, , an-1
Phn t aidx ng sau aidx-1 v trc aidx+1 (nu c)
Dng ch s:
Tm thy mt phn t, tr v v tr (ch s) ca n.
Thm vo mt phn t ti v tr idx th ch s cc
phn t c t idx tr v sau u tng ln 1.
Ch s ny c dng bt k danh sch c hin
thc th no cp vt l.
H Bch Khoa Tp.HCM
Gii thiu mn hc
100
Gii thiu mn hc
101
Gii thiu mn hc
102
alist.traverse(print_int);
alist.traverse(increase_int);
}
H Bch Khoa Tp.HCM
Gii thiu mn hc
103
Gii thiu mn hc
104
count=9
count=8
insert(3, z)
Gii thiu mn hc
105
Gii thiu mn hc
106
Gii thiu mn hc
107
count=7
count=8
remove(3, x)
Gii thiu mn hc
108
Gii thiu mn hc
109
Algorithm Traverse
Input: hm visit dng tc ng vo tng phn t
Output: danh sch c cp nht bng hm visit
//Qut qua tt c cc phn t trong list
1. for index = 0 to count-1
1.1. Thi hnh hm visit duyt phn t entry[index]
End Traverse
Gii thiu mn hc
110
Gii thiu mn hc
111
Chui (string)
Chui l mt dy cc k t
V d:
This is a string l 1 chui c 16 k t
l mt chui rng (c 0 k t)
Gii thiu mn hc
112
Cy nh phn
Cy nh phn
Cy rng
Hoc c mt node gi l gc (root) v 2 cy con gi
l cy con tri v cy con phi
V d:
Cy rng:
Cy c 1 node: l node gc
Cy c 2 node:
Gii thiu mn hc
113
Cc nh ngha khc
Mc:
Node gc mc 0.
Node gc ca cc cy con ca mt node mc m l
m+1.
Chiu cao:
Cy rng l 0.
Chiu cao ln nht ca 2 cy con cng 1
(Hoc: mc ln nht ca cc node cng 1)
ng i (path)
Tn cc node ca qu trnh i t node gc theo cc
cy con n mt node no .
H Bch Khoa Tp.HCM
Gii thiu mn hc
114
Gii thiu mn hc
115
Gii thiu mn hc
116
Php duyt cy
Duyt qua tng node ca cy (mi node 1 ln)
Cch duyt:
Chnh thc: NLR, LNR, LRN, NRL, RNL, RLN
Chun: NLR (preorder), LNR (inorder), LRN
(postorder)
Gii thiu mn hc
117
I
N
K
O
Kt qu: A B D H I N E J O K C F L P G M
H Bch Khoa Tp.HCM
Gii thiu mn hc
118
I
N
K
O
Kt qu: H D N I B J O E K A F P L C M G
H Bch Khoa Tp.HCM
Gii thiu mn hc
119
I
N
K
O
Kt qu: H N I D O J K E B P L F M G C A
H Bch Khoa Tp.HCM
Gii thiu mn hc
120
Cy lin kt
Gii thiu mn hc
121
Gii thiu mn hc
122
Tnh cht:
Ch cn c tnh 1 l
Duyt inorder s c danh sch c th t
Gii thiu mn hc
123
V d BST
25
10
37
18
6
5
12
29
20
13
50
35
41
32
Duyt inorder: 1 3 5 6 10 12 13 18 20 25 29 32 35 37 41 50
H Bch Khoa Tp.HCM
Gii thiu mn hc
124
Gii thiu mn hc
125
Gii thiu mn hc
126
Gii thiu mn hc
127
37
18
6
5
12
29
20
13
50
35
41
32
Ging
Node
gc
nhau
nh hn
ln
hn
Khc nhau
Tm kim 13
H Bch Khoa Tp.HCM
Tm thy
S node duyt: 5
S ln so snh: 9
Gii thiu mn hc
128
37
18
6
5
12
29
20
13
50
35
41
32
Khc nhau
Node
gc ln
nh hn
hn
Tm kim 14
H Bch Khoa Tp.HCM
Khng tm thy
S node duyt: 5
S ln so snh: 10
Gii thiu mn hc
129