Professional Documents
Culture Documents
Ngi thc hin: GVC. TS. Nguyn Trung Ha Email: ntrhoa@yahoo.com in thoi: 0904 162168
http://gg.gg/sns
1.1. Khi nim gii thut 1.2. Thit k gii thut 1.3. Phn tch v nh gi gii thut
1.1.1. Gii thut l g? 1.1.2. Cu trc d liu 1.1.3. Din t gii thut
http://gg.gg/sns
http://gg.gg/sns
Mt gii thut c
u vo (Input): tp cc i tng (d liu) u ra(Output): mt tp cc gi tr (thng tin)
Mt vi c im cn lu
Khng cn bit gi tr c th ca kt qu sau mi bc, ch cn bit cch chuyn t bc trc ti bc sau; Kt qu c th ca gii thut c th khng phi l kt qu ng (chnh xc) mc du phng php l ng.
http://gg.gg/sns
Lu tr ngoi
Tp (nh kiu v khng nh kiu)
http://gg.gg/sns
Lnh lp
for (i = 0 ; i<n; i++)
S;
http://gg.gg/sns
Lnh gn
Lnh vo, lnh ra iu kin Ni tip on lnh Lung thc hin
Lnh iu khin c th l:
Khi lnh Lnh iu kin Lnh lp
http://gg.gg/sns
S2
S3
B S2 S1
http://gg.gg/sns
http://gg.gg/sns
1.2.1. M un ha v vic gii quyt bi ton 1.2.2. Phng php tinh chnh tng bc (Stepwise Refinement) 1.2.3. V d
http://gg.gg/sns
10
Module ha bi ton
Chia bi ton ln (module chnh) thnh cc bi ton (module) nh hn Mi module thc hin cng vic c th no Lp i lp li cho n khi cc module l c ng, n th v bit cch gii quyt.
=> chin thut Chia tr
http://gg.gg/sns
11
http://gg.gg/sns
12
Ghi file:
u vo: Mng lu thng tin ca cc sinh vin Yu cu: Lu tr li file c ng
Xl TT
u vo: Mng lu thng tin ca cc sinh vin Yu cu: Tm mt sinh vin cho trc Hin th thng tin ca sinh vin Cp nht thng tin ca sinh vin In bn tng kt
http://gg.gg/sns
13
1.2.3. V d
Bi ton: Sp xp mt dy n s nguyn theo th t tng dn Ngn ng t nhin ca gii thut:
T dy s nguyn cha c sp xp chn ra s nh nht v t vo u dy c sp xp Loi s nguyn ra khi dy cha c sp xp Lp li cho n khi dy cha c sp xp l rng
http://gg.gg/sns
14
1.2.3. V d
Cu trc d liu:
Dy s ban u c lu tr trong mt mng mt chiu Dy sp xp s c lu trng vi dy cha sp xp => Gii thut: t s nh nht ca lt th i vo dy sp xp bng cch i ch vi s th i trong dy
Gi ngn ng
Tinh chnh ln 1 For (i=0; i<n; i++) { 1. Xt t ai n an-1 tm s nh nht aj 2. i ch ai v aj }
1.2.3. V d
Tinh chnh ln 2 Gii thut bc 1: Xt t ai n an-1 tm s nh nht aj
Coi ai l s nh nht ( j = i) So snh s nh nht v ai+1, s no nh hn th coi l s nh nht (nu ai+1< aj th j = i+1) Tip tc so snh s nh nht vi ai+2, ai+3, an-1, an Xc nh s nh nht bng cch nm c ch s ca n Tinh chnh bc 1 j = i; for (k = i+1; k<n; k++) If (ak< aj) j = k;
http://gg.gg/sns
15
1.2.3. V d
Gii thut bc 2: i ch ai v aj, s dng mt bin trung chuyn Tinh chnh bc 2
tmp = ai; ai = aj; aj= tmp;
Tinh chnh ln 3
function SapXep(a, n) /* a l mng cc s nguyn, n l s phn t mng */ { For (i = 0; i<n; i++) {
1.2.3. V d
/* 1. Tm s nh nht */ j = i; for (k = i+1; k<n; k++) If (ak< aj) j = k+1; /* 2. i ch*/ tmp = ai; ai = aj; aj= tmp; } }
Bi tp: Trnh by ngn ng t nhin, cc bc tnh chnh v gii thut gii bi ton: Cho mt dy cc s nguyn a1,a2,,an. Tm gi tr ln nht m ca cc s cho v ch s ln nht i trong cc s t gi tr m.
http://gg.gg/sns
16
Gii bi tp
Ngn ng t nhin
V phi tm s ln nht vi ch s ln nht, ta s xut pht t s cui cng ca dy l an v s so snh vi cc s trc , khi tm thy mt gi tr ln hn th ta ghi li (nh du) v li tip tc so snh s ny vi cc s trc , cng vic s c thc hin cho n khi so vi s u tin.
Tinh chnh ln u.
nht m l an, tt nhin lc ny k=n; 1) Xt i=i-1; 2) Nu i=0, th vit ra k, m (vic tm l xong - thut ton kt thc). 3) Nu ngc li th (so snh ai vi m) Nu ai > m th coi m l ai, k=i Quay li 1) (Chuyn qua xt s trc s th i).
Gii bi tp
Tinh chnh ln 1:
i=n; m=ai i=i-1; While (i != 0) do { (1). Nu m<ai th ghi li m=ai v i (2). Gim i }
Tinh chnh ln 3:
function timmax(a,n,m,k); /* a l mng cc s nguyn, n l kch thc dy, m l gi tr ln nht, k l v tr cc i*/ { i=n; m=ai i=i-1; While (i > 0)
Tinh chnh ln 2:
http://gg.gg/sns
17
1.3.1. Ti sao cn phn tch gii thut? 1.3.2. Phn tch thut ton 1.3.3. phc tp gii thut
http://gg.gg/sns
18
http://gg.gg/sns
19
http://gg.gg/sns
20
Thut ton 2
intsum = ((n+1)*n) / 2;
http://gg.gg/sns
21
http://gg.gg/sns
22
lim
n
f ( n) g ( n)
th f=O(g)
Vi mi s >0 th log(n)=O(n)
c lng phc tp ca gii thut ngi ta thng so snh khi lng tnh ton f(n) ca mt gii thut vi mt hm g(n) no thng qua bc Oln ca g(n), m thng thng g(n) l cc hm sau y (vi th t c tng ln dn):
http://gg.gg/sns
23
http://gg.gg/sns
24
Mt squy tc
Nu f(n) lmt a thc bc k, th f(n) = (nk). Vi cc hm logarit logmn = (log n).
http://gg.gg/sns
25
lim
n
f ( n) g ( n)
V
60n2 + 9n + 9 60n2 vi mi n 1, Chn C2=60 th 60n2 + 9n + 9 = (n2).
V
60n2 + 9n + 9 = O(n2) v 60n2 + 9n + 9 = (n2) nn 60n2 + 9n + 9 = (n2).
http://gg.gg/sns
26
V d 2.
Cu lnh for (i = 1; i <= n; i++) x := x + 1; c thi gian thc hin l T(n) = O(n.1) = O(n).
V d 3.
Cu lnh sau: for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) x := x + 1; c thi gian thc hin T(n) = O(n.n) = O(n2).
V d 4.
Cho on chng trnh: for (i = 0; i < n; i++) getch(A[i]); for (i = 0; i < n; i++) printf(%d,A[i]); Khi T(n) =T1(n) +T2(n) = O(max(n,n)) = O(n)
http://gg.gg/sns
27
Bi tp
http://gg.gg/sns
28
2.1. Biu din d liu v cc kiu d liu n 2.2. Kiu d liu c cu trc Cu trc d liu 2.2. H kiu ca ngn ng C 2.3. M hnh d liu v kiu d liu tru tng
http://gg.gg/sns
29
http://gg.gg/sns
30
2.
Kch thc ca kiu: Mi gi tr thuc kiu chim dng mt dung lng khng i b nh cn thit. Phm vi ca kiu: Mi kiu d liu xc nh mt tp hp c nh cc gi tr thuc kiu.
Chng hn, kiu integer trong ngn ng Pascal (int trong C) gm tt c cc s nguyn c biu din bi hai byte, tc l gm cc s nguyn t -32768 n + 32767.
3.
Cc ton t trn kiu: Mi kiu d liu, cn phi xc nh mt tp hp no cc php ton, cc hm chun c th thc hin c trn cc d liu ca kiu.
Chng hn, vi kiu real, cc php ton c th thc hin c l cc php ton s hc thng thng +, -, *, / , v cc php ton so snh =, < >, < , < =, >, > =; cc hm chun abs(.), sin(.), round(.),.
9 September 2010
62
http://gg.gg/sns
31
9 September 2010
63
V d: -38 00100110 11011001 Chui c n bit s biu din cc s (khng m) trong phm vi t -2n-1+1 n 2n-1-1, do nu c 8 bit (1 byte) s biu din c cc s t -127 n 127 Vi s nh phn 8 bit dng b 1 c hai gi tr 0 l 00000000 (0 dng) v 11111111 (0 m).
9 September 2010
64
http://gg.gg/sns
32
V d: -38 00100110 11011001 11011010 Chui c n bit s biu din cc s (khng m) trong phm vi t -2n-1 n 2n-1-1, do nu c 8 bit (1 byte) s biu din c cc s t -128 n 127 Vi s nh phn 8 bit dng b 2 c mt gi tr 0 l 00000000
9 September 2010 2.1. Biu din d liu 65
http://gg.gg/sns
33
Biu din phn nh tr v phn m nhng bin ny tun theo chun IEEE (Institute of Electrical and Electronics Engineers) v s thc du chm ng. Hu ht cc trnh bin dch C hin nay u theo chun ny (Xem thm trong hc phn Kin trc my tnh). Ch rng biu din s thc ni chung ch l biu din gn ng, xp x bi mt s hu t.
9 September 2010 2.1. Biu din d liu 67
Chui k t
http://gg.gg/sns
34
http://gg.gg/sns
35
Cc d liu thnh phn c th l d liu n, hoc cng c th l mt cu trc d liu c xy dng. Hu ht cc ngn ng lp trnh bc cao u cc cu trc d liu nh xu k t, mng, bn ghi, tp hp, tp.
9 September 2010
71
S dng con tr lin kt cc khi, mi khi l mt bn ghi gm hai phn INFOR v LINK, phn INFOR c th c mt hay nhiu trng d liu, cn phn LINK c th cha mt hay nhiu con tr tr n cc khi khc c quan h vi khi .
Danh sch
9 September 2010 2.1. Biu din d liu 72
http://gg.gg/sns
36
G 2
Biu din cc m hnh d liu bi cc kiu d liu tru tng. Biu din cc thut ton bng gi ngn ng
G 3
La chn cu trc d liu Th hin thut ton bi cc thu tc (hm) trong ngn ng lp trnh no o.
9 September 2010 2.1. Biu din d liu 73
http://gg.gg/sns
37
Tuy nhin c th thm mt s kiu trong C bng cch thay i khai bo cc kiu char, int thng qua vic b sung cc tin t signed, unsigned, short, long (Xem Help ca C);
9 September 2010 2.2. H kiu ca ngn ng C 75
Bin con tr l mt loi bin c bit, c kch thc c nh, khng dng lu tr d liu m lu tr a ch ca mt bin khc nhm gip truy nhp v qun l d liu c lu tr trong vng nh dnh cho bin . Kch thc bin con tr ph thuc cch biu din a ch b nh. Trong my PC thng s dng hai thanh ghi 16 bit biu th a ch b nh nn kch thc ca bin con tr l 4 byte. Kiu con tr l g?
Mi kiu d liu c tr bi mt bin con tr no th bin con tr y phi c khai bo c th truy xut c d liu m n tr n. V vy m c kiu con tr C cc kiu con tr nguyn, con tr thc, con tr k t, con tr mng,
9 September 2010 2.2. H kiu ca ngn ng C 76
http://gg.gg/sns
38
9 September 2010
77
9 September 2010
78
http://gg.gg/sns
39
Trong cc ngn ng lp trnh mt mng c khai bo nh l mt bin, trong o gia tr ca n l mt tp hp c th t cc phn t, th t o c xc nh theo mt quy lut no o va c xc nh nh ch s ca n.
Nu mt ch s c dng thi mng c gi l 1 chiu, Nu nhiu ch s c dng ta gi l mng nhiu chiu (2chiu, 3-chiu, ...).
9 September 2010
79
x[1]
x[2]
x[i]
x[n]
9 September 2010
80
http://gg.gg/sns
40
X[0][0] X[mmax-1][0]
X[0][1] X[mmax-1][1]
X[0][nmax-1]
X[mmax-1] [nmax-1]
ch c s
9 September 2010
82
http://gg.gg/sns
41
http://gg.gg/sns
42
Mt m hnh d liu
s c biu din bi cu trc d liu. c th c biu hin bi nhiu cu trc d liu khc nhau.
2.3. M hnh d liu v kiu d liu tru tng
9 September 2010
85
9 September 2010
86
http://gg.gg/sns
43
Biu din s hu t a/b vi cc tc v cng, nhn, chia hai s hu t s c thc hin nh th no?
M t d liu: t s, mu s (l cc s nguyn) Cc tc v: Cng: cong(s hu t 1, s hu t 2) Nhp a v b l t v mu tng ng ca s hu t 1 Nhp c v d l t v mu tng ng ca s hu t 2 Xut ad+bc l t ca tng; bd l mu ca tng
9 September 2010 2.3. M hnh d liu v kiu d liu tru tng 87
9 September 2010
88
http://gg.gg/sns
44
9 September 2010
89
Chng 3.
Gii thut quy
3.1. Khi nim gii thut quy 3.2. Thit k gii thut quy 3.3. quy v lp
http://gg.gg/sns
45
V d
Tm file trong th mc (trn my tnh)
Nu khng c th mc con, tm trong danh sch file Nu c th mc con, tm file trong th mc (con)
Tm t trong t in (ln)
Nu t in l mt trang, tm trong trang Nu khng,
Chia i t in thnh hai (t in) Xc nh t cn tm thuc t in mi Tm t trong t in (nh)
http://gg.gg/sns
46
Tm iu kin dng
L (cc) trng hp gii khng quy (trng hp c s) Thng l (cc) trng hp bi ton c kch thc nh nht V d: Thiu trng hp c s -> bi ton khng dng.
Vic tnh giaithua(4) thng qua quy c th xem nh c thc hin bi 4 my:
My 4 tnh (4 * 3!) -> khi ng my 3 My 3 tnh (3 * 2!) -> khi ng my 2 My 2 tnh (2 * 1!) -> khi ng my 1 My 1 tnh (1 * 0!) -> trng hp c s
http://gg.gg/sns
47
Tnh nx
Nu n=1 th nx=x Nu khng th nx=(n-1)x+x
Tnh xn
Nu n=0 th xn=1 Nu khng th xn=xn-1x
http://gg.gg/sns
48
http://gg.gg/sns
49
CD(2,A,B,C) 3
C1D(A,B)
CD(2,C,A,B) 6
C1D(C,A)
CD(2,B,C,A) 10
C1D(B,C)
CD(2,A,B,C) 13
C1D(A,B)
4
C1D(B,C)
11
14
C1D(A,B)
C1D(C,A)
12
C1D(B,C)
15
Chng A
Chng B
Chng C
http://gg.gg/sns
50
Chng A
Chng C
Chng B
3.3. quy v lp
Hiu lc ca quy
u im:
n gin, ngn gn, d vit code Bi ton vit c di dng cng thc quy => n gin Mt s gii thut quy cng c hiu lc cao, v d nh Quick sort
Nhc im:
Tn khng gian nh Tc chm
http://gg.gg/sns
51
3.3. quy v lp
quy v Stack
S dng hm/th tc quy gy pht sinh b nh lin tc dn n nguy c trn b nh. V d trong s hot ng ca bi ton thp H ni ta thy
3.3. quy v lp
CD(4,A,B,C) 1 CD(3,A,C,B) 2 CD(3,B,A,C) 9
CD(2,A,B,C) 3
C1D(A,B)
CD(2,C,A,B) 6
C1D(C,A)
CD(2,B,C,A) 10
C1D(B,C)
CD(2,A,B,C) 13
C1D(A,B)
11
12
14
15
C1D(B,C)
C1D(B,C)
C1D(A,B)
C1D(C,A)
5 4 3 3 3 3 3 6 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1
14 15 7 8 11 12 6 6 6 6 1010 10 10 10 13 13 13 13 13 2 2 2 2 2 9 9 9 9 9 9 9 9 9 9 9 9 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
http://gg.gg/sns
52
3.3. quy v lp
nh gi gii thut Thp H ni
Gi f(n) l s ln chuyn a cn thit chuyn n a t ct1 sang ct 3.
Ta c f(1) = 1; f(n) = 2 f(n1) + 1, if n > 1 = 2(2 f(n2) + 1) + 1=22 f(n-2) + 2 + 1 = = 2n-1 f(1) + 2n-2 + + 2 + 1 = 2n-1+ 2n-2+ + 2 + 1 = 2n1
Nh vy, s ln chuyn a theo gii thut quy l qu ln, nu mt ln chuyn 1 a mt 1 giy th mt ngi chuyn 64 a s mt 5 1011 nm= 25 ln tui ca v tr. Khi chuyn xong chng a th n ngy tn th!
3.3. quy v lp
Ci t danh sch lin kt bng gii thut quy Type kieudl=string[20]; tropt=^kieupt; kieupt=record nd:kieudl; t:tropt; end; Var goc:tropt; d:pointer; pt:kieudl; Procedure xuly(nut:tropt); begin write(nut^.nd); end; Procedure xltruoc(nut:tropt); Begin if nut<>nil then begin xuly(nut); xltruoc(nut^.t); end; End; Procedure xlsau(nut:tropt); Begin if nut<>nil then begin xlsau(nut^.t); xuly(nut); end; End;
http://gg.gg/sns
53
3.3. quy v lp
Procedure Tim_bosung(var goc:tropt; st:kieudl); Begin if goc=nil then Begin New(goc); with goc^ do begin nd:=st; t:=nil; end; end else with goc^ do if st<>nd then tim_bosung(t,st) else writeln('Da co du lieu'); End; BEGIN writeln('Vi du ve danh sach tuyen tinh '); mark(d); goc:=nil; repeat write('Nhap du lieu (Enter de ke thuc): '); readln(pt); if length(pt)>0 then tim_bosung(goc,pt) until length(pt)=0; writeln; writeln('Duyet truoc'); xltruoc(goc); writeln; writeln('Duyet sau'); xlsau(goc); writeln; release(d); readln; END.
3.3. quy v lp
Nhiu gii thut quy u c th thay th bng gii thut khng quy (s dng vng lp) Mi cng thc truy hi u c th tnh c bng gii thut quy. Mi cng thc truy hi cp k u c th tnh c qua php lp bng cch s dng k bin ph. Hiu qu hn nhiu khi dng quy. V d
Tnh fibonaci(n) thng qua gii thut lp
f0=0; fibo=f1=1 for (i=1;i<=n;i++) { f0=f1; f1=fibo; fibo=f0+f1; { return fibo;
Tuy nhin khng phi mi gii thut quy u c th chuyn c v gii thut lp.
http://gg.gg/sns
54
Chng 4.
Danh sch tuyn tnh
4.1. Khi nim v danh sch 4.2. Danh sch lin kt n 4.3. Cc thao tc c bn trn danh sch lin kt n 4.4. Cc dng khc ca danh sch lin kt 4.5. S dng danh sch mc ni V d bi ton cng a thc 4.6. Ngn xp v Hng i
http://gg.gg/sns
55
4.1.1.Cc khi nim danh sch, danh sch tuyn tnh, danh sch lin kt
Danh sch
L tp hp cc phn t d liu c cng kiu c cu trc, sp xp theo mt trt t no
http://gg.gg/sns
56
4.1.1.Cc khi nim danh sch, danh sch tuyn tnh, danh sch lin kt
Danh sch tuyn tnh L tp hp cc phn t d liu c cng kiu c cu trc, sp xp (logic) theo mt trt t tuyn tnh
Nh vy, danh sch tuyn tnh l
Mt chui cc phn t Tn ti phn t u v phn t cui Mi phn t c phn t trc v phn t sau
Phn t 1 Phn t 2 Phn t 3 Phn t n
9-Sep-10
113
4.1.1.Cc khi nim danh sch, danh sch tuyn tnh, danh sch lin kt
Mt danh sch tuyn tnh c S phn t bin i Mt phn t thng l mt bn ghi (record trong Pascal) hoc mt cu trc (struct trong C) Cc thao tc thng s dng nht Thm phn t Xa phn t Duyt danh sch Cc thao tc khc: Sp xp Tm kim Ghp 2 danh sch Tch 1 danh sch thnh nhiu danh sch Sao chp danh sch Cp nht
9-Sep-10 3.1. Khi nim v danh sch 114
http://gg.gg/sns
57
4.1.1.Cc khi nim danh sch, danh sch tuyn tnh, danh sch lin kt
Phn loi danh sch tuyn tnh
9-Sep-10
115
4.1.1.Cc khi nim danh sch, danh sch tuyn tnh, danh sch lin kt
Danh sch lin kt L tp hp cc phn t d liu c cng kiu bn ghi (cu trc), trong c t nht mt trng thuc kiu con tr lm nhim v tr n phn t khc trong danh sch S cu to: c nhiu dng ty theo cu trc, c ch ca s lin kt (S trnh by chi tit sau). V d:
9-Sep-10
116
http://gg.gg/sns
58
Nhc im Thm v xa KHNG d dng Danh sch thng xuyn thm bt phn t => Khng bit trc s phn t Tn b nh v phi cp pht nhiu hn cn thit gi ch.
9-Sep-10 3.1. Khi nim v danh sch 117
9-Sep-10
118
http://gg.gg/sns
59
http://gg.gg/sns
60
9-Sep-10
121
S cu to chung
a
(con tr danh sch) P
Mi danh sch nht thit phi km theo mt con tr (con tr danh sch) qun l danh sch.
9-Sep-10
122
http://gg.gg/sns
61
Phi c mt con tr lu gi a ch ca mt nt trong danh sch, sao cho t c th truy cp c n mi nt khc ca danh sch
9-Sep-10 3.2. Danh sch lin kt n 123
4.2.3. Mt s lu
Nu khng c quy c g th node pha con tr danh sch c gi l node u tin, node pha kia c gi l node cui cng ca danh sch. Con tr trong Node cui cng tr vo Nil (Null) Mt s ngi thng nhc n hai loi danh sch FIFO v LIFO nh l hai danh sch lin kt n ni chung. Tuy nhin c s nhm ln gia hai gii thut khc nhau to danh sch vi hai kiu c bit ca danh sch. Mt vi quy c
Nu th t cc phn t ca danh sch c thit lp (theo th t thi gian) l d,c,b,a th ta s gi gii thut to danh sch l gii thut LIFO
Nu th t cc phn t ca danh sch c thit lp (theo th t thi gian) l a,b,c,d th ta s gi gii thut to danh sch l gii thut FIFO, Trong gii thut ny ta cn thm mt con tr na tr vo d.
9-Sep-10
124
http://gg.gg/sns
62
4.3.1. Gii thiu chung 4.3.2. Khi to v lp danh sch lin kt n 4.2.3. Duyt danh sch 4.3.4. Sp xp danh sch 4.3.5. Tm kim trong danh sch 4.3.6. B sung phn t vo danh sch 4.3.7. Loi b mt phn t ra khi danh sch
Cc thao tc ny thng c lp i lp li nhiu ln trong mt chng trnh c ci t danh sch lin kt n, do chng thng c vit di dng chng trnh con s dng nhiu ln.
9-Sep-10 3.3. Cc thao tc c bn trn danh sch lin kt n 126
http://gg.gg/sns
63
9-Sep-10
127
4.3.2. Khi to v lp danh sch (Gii thut kiu LIFO to danh sch)
Bt u TroDS=NULL Tam<=Avail b Nhp d liu vo DL(Tam) Ke(Tam)=TroDS c TroDS=Tam Tr tm _ Kim tra kin dng + Kt thc
3.3. Cc thao tc c bn trn danh sch lin kt n
TroDS
DL
a d
DL
DL
DL
9-Sep-10
NULL
128
http://gg.gg/sns
64
4.3.2. Khi to v lp danh sch (Gii thut kiu FIFO to danh sch)
Bt u TroDS=NULL Tam<=Avail Nhp d liu vo DL(Tam) Tm Ke(Tam)=NULL
TroDS==NULL DL DL
TroDS
DL
a b c
TroDS=Tam
Ke(Tr cui)=Tam _
9-Sep-10
Tr cui Tr cui=Tam
DL
+ Kt thc
NULL
129
TroDS a b
DL a
DL a
DL d
DL d
9-Sep-10
130
http://gg.gg/sns
65
Ta s bt chc thut ton trn, p dng vo danh sch lin kt Cc bin chy i, j thut ton trn ng vai tr cung cp cc a ch ca cc phn t ca dy.
9-Sep-10 3.3. Cc thao tc c bn trn danh sch lin kt n 131
Qu trnh chy
Tm1: T u (tr danh sch) n p cht (tam1^.ke=NULL) Tm2: t ngay sau tm1 n ht (NULL)
9-Sep-10
132
http://gg.gg/sns
66
Gii thut sp xp
Tm1:=TroDS; Khi tm1^.k<>nil thc hin Tm2:=tm1^.k; Khi tm2<>nil thc hin Nu tm1^.nd>tm2^.nd th tro tm1^.nd v tm2^.nd Tm2:=tm2^.k; Tm1:=tm1^.k; Lu khi vit chng trnh con th tham s duy nht ca chng trnh con l con tr danh sch, n l tham tr.
133
iu kin dng thng l biu thc cng logic or Dng th tc: u ra l thng bo trc tip hoc l tham bin truyn gi tr tm c ra ngoi. Dng hm boolean: thng s dng tr li cu hi c/khng?
9-Sep-10 3.3. Cc thao tc c bn trn danh sch lin kt n 134
http://gg.gg/sns
67
Tm=Ke(Tm) +
tha yu cu
Khng tm c
Gn tr tm c cho bin ra
Kt thc
3.3. Cc thao tc c bn trn danh sch lin kt n
9-Sep-10
135
t bi ton:
B sung g ?
(mt phn t vo danh sch)
B sung vo u?
(vo danh sch ang c tr (qun l) bi trods)
V tr no?
(cn mt con tr Q na?) Bn tri hay bn phi Q^? Trc hay sau Q^?
Vy ta c cc bi ton sau:
9-Sep-10 3.3. Cc thao tc c bn trn danh sch lin kt n 136
http://gg.gg/sns
68
Tm t tn l Bosungtruoc(...)
9-Sep-10 3.3. Cc thao tc c bn trn danh sch lin kt n 137
Trods a
Tam1 b
Tam DL d c
http://gg.gg/sns
69
Bi ton 2:
Vit chng trnh con b sung phn t d liu pt vo danh sch lin kt n ang c tr bi trods, ti v tr ang c tr bi con tr Q, sao cho sau khi b sung con tr k ca phn t c tr bi Q tr vo phn t va c b sung.
Q^ a Trods b Q c d e
Tm t tn l Bosungsau(...)
9-Sep-10 3.3. Cc thao tc c bn trn danh sch lin kt n 139
Tam
Q^ b Q
3.3. Cc thao tc c bn trn danh sch lin kt n 140
http://gg.gg/sns
70
Loi b trong danh sch no? Loi b phn t no? (v tr no) Bi ton: Loi b mt phn t ra khi danh sch ang c tr bi Trods ti v tr c tr bi Q Chng trnh con cn c hai tham s: tham s TroDS v tham s con tr Q, trong TroDS cn thit l tham bin
3.3. Cc thao tc c bn trn danh sch lin kt n
9-Sep-10
141
Tam=Ke(Tam)
Ke(Tam)=Ke(Q) TroDS=Ke(Q)
Q=>Avail Kt thc
9-Sep-10 3.3. Cc thao tc c bn trn danh sch lin kt n
d
142
http://gg.gg/sns
71
L danh sch lin kt n, sao cho vic kt ni gia cc phn t to thnh mt chu trnh.
http://gg.gg/sns
72
Khi no th kt thc duyt? (kim tra Ke(tam) == TroDS?) Bi tp: Vit gii thut to danh sch ni vng, duyt v xem danh sch, sp xp danh sch.
S cu to:
Mi nt Danh sch
a TroDS b DL Ketruoc Kesau
http://gg.gg/sns
73
http://gg.gg/sns
74
Nu khng, Nu Q==TroDS
To mt kt ni (sau) n phn t u ang tr bi Q To kt ni (trc) ti NULL Thay kt ni trc ca Q Thay a ch ca TroDS
Nu khng,
To 2 kt ni t phn t mi ti danh sch Thay 2 kt ni t danh sch ni ti phn t mi
Bt u Tam<=Avail Nhp d liu vo DL(Tam) TroDS==NULL + Ketruoc(Tam)=Kesau(Tam)=NULL Ketruoc(Tam)=Ketruoc(Q) _ Kesau(Ketruoc(Q)=Tam Ketruoc(Q)=Tam Kt thc Q==TroDS _
TroDS=Tam
Kesau(Tam)=Q + TroDS=Tam
http://gg.gg/sns
75
Nu khng,
Nu (Kesau(Q)=NULL) Kesau(Ketruoc(Q))=NULL Nu khng
Ketruoc(Kesau(Q))=Ketruoc(Q) Kesau(Ketruoc(Q))=Kesau(Q)
Q=>Avail
Bt u + + Q==TroDS _ _
TroDS Q
Kesau(Q)==NULL
_ Kesau(Q)==NULL + Kesau(Ketruoc(Q))=NULL
Ketruoc(Kesau(Q))=NULL
http://gg.gg/sns
76
T c v t ci t
http://gg.gg/sns
77
V d:
Ta hnh dung ngn xp nh mt ngn ko ng ti liu (ca mt bn lm vic) m ta ch c th thm vo hoc bt i cc phn t (ti liu) trong t mt trn (nh) ca ngn ko. on o chiu toa xe la. Hp bng n ca sng AK. Mt chng cc vt cng kiu (sch, bt, o, ng xu, hp n sng my AK47)
V vy m c tn gi Stack (danh sch kiu xp chng)
http://gg.gg/sns
78
Nh vy:
Cc phn t ca ngn xp c cng mt kiu no Ngn xp l mt trng hp ring ca danh sch, c s dng trong cc ng dng c lin quan n s o ngc. Trong CTDL ngn xp, vic thm hay ly d liu ch c thc hin ti mt u. D liu thm vo sau s ly ra trc, tnh cht ny cn c gi l vo sau ra trc (Last In First Out LIFO). V vy, t nay v sau khi ni n ngn xp ta hiu l danh sch kiu LIFO
Stack rng
R Stack rng D R M D R M D R Q D R G Q D R G Q M D A R Q
Stack
http://gg.gg/sns
79
Nh vy ta phi nhiu ln thc hin thao tc push(s, sodu) trong qu trnh thc hin chia lin tip cho 2 v sau khi thc hin xong dy cc php chia li phi lin tip vit ra pop(s) cho n khi ngn xp s rng
http://gg.gg/sns
80
http://gg.gg/sns
81
http://gg.gg/sns
82
http://gg.gg/sns
83
http://gg.gg/sns
84
http://gg.gg/sns
85
Cu trc ngn xp
Type
Nmax=100; Kieudl=<kiu d liu>; Kieumang=array[1..100] of kieudl; Kieunx=record dl:kieumang; dinh:integer; end;
Var
S: kieunx;
http://gg.gg/sns
86
http://gg.gg/sns
87
R rng cch vit ny c u im l khng cn n cc du ngoc, ng thi qu trnh tnh gi tr ca biu thc ny c minh ha bi hnh v sau
http://gg.gg/sns
88
Bt u Khi to(s) c thnh phn (tip theo) ca biu thc i=0 La_Rong(s) _ _ L ton hng + Push(s,ton hng) Ht biu thc + _
Bo li b thc (Return 0)
http://gg.gg/sns
89
http://gg.gg/sns
90
Bt u Khi to(s) c thnh phn-tp (tip theo) ca b thc tt _ La((tp) Push(s,tp) L ton hng(tp) Latt(tp) Pt=pop(s) + _ + Vit tip(bt,tp) La_Rong(s) Push(s,pt) Push(s,tp) Ht biu thc _
La_Rong(s) + Kt thc
http://gg.gg/sns
91
http://gg.gg/sns
92
Nh vy:
Cc phn t ca hng i c cng mt kiu no Hng i l mt trng hp ring ca danh sch, c s dng trong cc ng dng c lin quan n s bor tn th t. Trong CTDL hng i, d liu thm vo trc s ly ra trc, tnh cht ny cn c gi l vo trc ra trc (First In First Out -FIFO). V vy, t nay v sau khi ni n hng i ta hiu l danh sch kiu FIFO
http://gg.gg/sns
93
http://gg.gg/sns
94
http://gg.gg/sns
95
4 3
1 u 2
ui
4 3
1 u 2
ui
4 3 2
u
ui u
4 3
Cc gii thut
Khai bo cu trc v bin hng i (q) gm
Mng (ng) lu tr cc phn t d liu (qarr) vi kch thc ti a l maxsize Cc bin nguyn (dau, duoi) tr tng minh n u v ui ca hng i Bin nguyn (kth) xc nh kch thc hin thi ca hng i
Khoitao(q)
http://gg.gg/sns
96
http://gg.gg/sns
97
10
duoi
dau
i t i s q u e u e ! 0 1 2 3 4 5 6 7 8 9
Chng 5. Cy
5.1. Cy v cc khi nim v cy 5.2. Cc php ton trn cy 5.3. Ci t cy 5.4. Cy nh-phn
http://gg.gg/sns
98
5.1.1. nh ngha cy
S cn thit phi s dng cu trc cy Danh sch tuyn tnh ch th hin c cc mi quan h tuyn tnh. Thng tin cn c th c quan h dng phi tuyn, nh ngha cy (c gc) L mt danh sch T khc rng trong
Hoc T ch bao gm mt phn t r. Hoc nu nhiu hn mt phn t r th r gi l gc v c mt quan h F trn n phn cn li (tr gc r) c chia thnh m (m>0) cy vi cc gc r1, r2,,rm sao cho vi mi i (1 i m) u c r F ri.. Quan h F c gi l quan h chacon.
Nu x F y th ta gi x l cha ca y hoc y l con ca x. Cc cy vi cc gc r1, r2,,rm c gi l cc cy con ca cy r
http://gg.gg/sns
99
5.1.1. nh ngha cy
Biu din cy bi th
A B G
http://gg.gg/sns
100
http://gg.gg/sns
101
5.1.3. Cy c sp
Trong mt cy, nu cc cy con ca mi nh c sp theo mt th t nht nh, th cy c gi l cy c sp (t tri qua phi). Sau ny chng ta ch quan tm n cc cy c sp. Do khi ni n cy th cn c hiu l cy c sp. Gi s trong mt cy c sp T, nh a c cc con c sp theo th t : b1, b2, ..., bk (k 1). Khi ta ni b1 l con trng ca a, v bi l anh lin k ca bi+1 (bi+1 l em lin k ca bi), i = 1,2, ..., k-1. Ta cn ni, vi i < j th bi bn tri bj (bj bn phi bi). Quan h ny c m rng nh sau: Nu a bn tri b th mi hu th ca a bn tri mi hu th ca b. V d. Trong cy cho I l con trng ca H, v l anh lin k ca nh J. nh K l con t ca H ( tn cng bn bn phi trong s cc con ca H.
5.1.4. V d
Cy biu din cc t chc
Chnh ph B A B B B Z V T
S X
Cc Y
Ban r
Ban s
Cy th mc
http://gg.gg/sns
102
Tm em lin k ca mi nh.
Hm NextSibling (x) xc nh em lin k ca nh x. Trong trng hp x khng c em lin k (tc x l con ngoi cng bn phi ca mt nh no ) th NextSibling(x) = NULL.
http://gg.gg/sns
103
A G
A G
http://gg.gg/sns
104
http://gg.gg/sns
105
5.3. Ci t cy
5.3.1. Biu din cy bng danh sch cc con ca mi nh 5.3.2. Biu din cy bng con trng v em lin k ca mi nh 5.3.3. Biu din cy bi cha ca mi nh
http://gg.gg/sns
106
A 1 B 2 G 3
C 4
F 5
H 6
L 7
D 8
E 9
I 10
J 11
K 12
http://gg.gg/sns
107
http://gg.gg/sns
108
end ;
http://gg.gg/sns
109
Mng cc con tr
B G
http://gg.gg/sns
110
http://gg.gg/sns
111
type kieupt = record DL : kieudl ; EldestChild : 0...N ; NextSibling : 0...N end ; Tree = array[1...N] of kieupt ;
http://gg.gg/sns
112
1 2 3 4 5 6 7 8 9 10 11 12
A B G C H F L D E I J K
2 4 6 8 10 0 0 0 0 0 0 0
0 3 0 5 7 0 0 9 0 11 12 0
A 1 B 2 G 3
C 4
F 5
H 6
L 7
D 8
E 9
I 10
J 11
K 12
http://gg.gg/sns
113
Tr conTr em
http://gg.gg/sns
114
1 2 3 4 5 6 7 8 9 10 11 12
A B G C F H L D E I J K
0 1 1 2 2 3 3 4 4 6 6 6
A 1 B 2 G 3
C 4
F 5
H 6
L 7
D 8
E 9
I 10
J 11
K 12
http://gg.gg/sns
115
5.4. Cy nh phn
5.4.1. nh ngha v tnh cht 5.4.2. Ci t cy nh phn 5.4.3. Duyt cy nh phn 5.4.4. Cy tm kim nh phn
R A E
http://gg.gg/sns
116
A B C D E F G
http://gg.gg/sns
117
5.4.2. Ci t cy nh phn
Lu tr k tip (Dng mng)
Sp th t cc nh t mc 0 tr i v trong mi mc c nh s t tri sang phi. i vi cc cy nh phn hon chnh
D xc nh a ch ca cc nh
Con ca nh i l cc nh 2i v 2i+1 Cha ca nh i l [i/2].
Do mi thnh phn ca mng ch cn trng lu tr d liu m khng cn cc trng thng tin v quan h.
i vi cc cy nh phn khc, mi thnh phn ca mng nn c thm 2 trng: a ch (ch s) ca cy con tri v ca cy con phi.
5.4.2. Ci t cy nh phn
A
http://gg.gg/sns
118
5.4.2. Ci t cy nh phn
Typedef struct kpt
{
kieudl DL; struct kpt *trai; Struc kpt *phai;
}KieuPT;
5.4.2. Ci t cy nh phn
Trng d liu A
Tr conTr em
http://gg.gg/sns
119
http://gg.gg/sns
120
http://gg.gg/sns
121
D B C F D B A C E E
H G I
H G I J K
http://gg.gg/sns
122