You are on page 1of 31

MC LC

Chng 1: Gii thiu cu trc d liu v thut ton ................................. Trang 1 Bi thc hnh s 1: Kiu d liu c cu trc ...................................................... 1 Chng2: Tm kim v sp xp ............................................................................... 7 Bi thc hnh s 2: Cc phng php tm kim ................................................. 7 Bi thc hnh s 3: Cc phng php sp xp ................................................. 10 Bi thc hnh s 4: Cc phng php sp xp (tt) ........................................... 14 Bi thc hnh s 5: p dng cc phng php sp xp v tm kim ............... 18 Chng 3: Cu trc danh sch lin kt ................................................................. 19 Bi thc hnh s 6: Danh sch lin kt n ...................................................... 19 Bi thc hnh s 7: p dng danh sch lin kt ............................................... 21 Bi thc hnh s 8: Cc thao tc trn Stack - Queue ....................................... 23 Chng 3: Cu trc cy .......................................................................................... 27 Bi thc hnh s 9: Cy nh phn, Cy nh phn tm kim............................... 27 Bi thc hnh s 10: Cc thao tc trn cy nh phn tm kim cn bng ......... 29 Cc bi kim tra: ..................................................................................................... 30 TI LIU THAM KHO

Thc hnh Cu trc d liu v Gii thut 1

Chng 1: GII THIU CU TRC D LIU PHN TCH THUT TON


BI THC HNH S 1
(4 tit)

Mc tiu
Thng nht mt s chun v quy c trong lp trnh. Nm kiu d liu c cu trc v cc thao tc trn chng.

Ni dung
n li kiu d liu c cu trc (kiu nh ngha bng t kha struct) Cc quy c lp trnh.

Yu cu
Nm vng phng php lp trnh cu trc trong C/C++ v bit cch s dng mi trng lp trnh Visual C++ 6.0. 1. CC QUY C LP TRNH Quy c t tn hng Trong Visual C++ 6.0, hng s c khai bo bng t kha #define. Mt s quy c trong vic t tn hng nh sau: i) Tn hng phi th hin c ngha ca n. ii) Tn hng c vit hoa ton b v cc t trong tn cch nhau bng k t _. Quy c t tn bin i) Tn bin phi th hin c ngha ca n. int t, m; // Khng r ngha. int iTuSo, iMauSo; // R ngha. ii) Tn bin c vit hoa cc k t u mi t trong tn, cc k t cn li vit thng. int ituso, imauso; // Khng nn

Thc hnh Cu trc d liu v Gii thut 1

int iTuso, iMauso; // Khng nn int iTuSo, iMauSo; // nn iii) Tn bin c phn tip u ng (prefix) th hin kiu d liu ca bin (phong cch Hungarian): Kiu d liu s char c short s int i long l float f double d

char cKyTu; short sSoNguyenNgan; int iSoNguyen; long lSoNguyenDai; float fSoThuc; double dSoThucDai; int nSo;

Kiu d liu lun l bool - b bool bLuanLy; Kiu d liu mng [] arr int arrSoNguyen[50]; HocSinh arrDanhSach[50]; Kiu d liu chui char *, char [] str char *strChuoi; char strChuoi[50]; Kiu d liu con tr *-p int *pConTro; HocSinh *pDanhSach; Quy c t tn kiu d liu t nh ngha i) Tn kiu d liu t nh ngha (struct) thng l danh t v phi th hin c ngha ca kiu d liu . struct TinhPhanSo // khng nn struct PhanSo // nn ii) Tn kiu d liu t nh ngha c vit hoa cc k t u mi t trong tn, cc

Thc hnh Cu trc d liu v Gii thut 1

k t cn li vit thng. V d struct PhanSo Quy c t tn hm i) Tn hm thng l ng t v phi th hin hnh ng cn thc hin. int DataFile(char *strFileName) // khng nn int LoadDataFile(char *strFileName) // nn. int BadValue(long lValue) // khng nn int CheckForBadValue(long lValue) // nn ii) Tn hm c vit hoa cc k t u mi t trong tn, cc k t cn li vit thng. int checkforbadvalue(long lValue) // khng nn int CheckforBadvalue(long lValue) // khng nn int CheckForBadValue(long lValue) // Nn. Quy c vit cu lnh i) Vit mi cu lnh ring trn mt dng. // Khng nn. x = 3; y = 5; // nn vit x = 3; y = 5; ii) Vit cc du { } ring trn mt dng. void Swap(int &a, int &b) { int c = a; a = b; b = c; } iii) Vit cc cu lnh if, while, for ring trn mt on. if (a > b) printf( "a lon hon b");

Thc hnh Cu trc d liu v Gii thut 1

for (int i = 0; i < n; i++) x = x + 5; k = k * x; iv) Vit cc cu lnh cng thc hin mt cng vic ring trn mt on. int c = a; a = b; b = c; k = k * a; x = b + c; Quy c cch khong i) Vit cch vo mt khong tab i vi cc cu lnh nm gia du { }. // khng nn void Swap(int &a, int &b) { int c = a; a = b; b = c; } // nn vit void Swap(int &a, int &b) { int c = a; a = b; b = c; }

ii) Vit cch vo mt khong tab i vi cu lnh ngay sau if, else, while, for. // Khng nn. // nn vit if (a > b) if (a > b) printf( "a lon hon b"); printf( "a lon hon b"); else else printf("a nho hon hoac bang b"); printf("a nho hon hoac bang b"); for (int i = 0; i < n; i++) x = x + 5; for (int i = 0; i < n; i++) x = x + 5;

iii) Vit cch mt khong trng xung quanh cc ton t 2 ngi. x=x+5*a-c; // Khng nn x = x + 5 * a - c; // nn

Thc hnh Cu trc d liu v Gii thut 1

if (a>=b) // Khng nn if (a >= b) // nn iv) Vit cch mt khong trng sau cc du , ;. void CalculateValues(int a,int b,int c); // khng nn void CalculateValues(int a, int b, int c); // nn for (int i = 0;i < n;i++) // khng nn for (int i = 0; i < n; i++) // nn

Quy c vit ch thch Trong C++, chng ta dng du // hoc /* */ vit ch thch cho chng trnh. Mt s quy c khi vit ch thch nh sau: i) Ch thch phi r rng, d hiu v din gii c ngha ca on lnh, hm... ii) Dng du // thay cho /* */ khi vit ch thch. /* void Swap(int &a, int &b) { int c = a; a = b; b = c; } */ // nn dng //void Swap(int &a, int &b) //{ // int c = a; // a = b; // b = c; //}

2. BI TP Gi s quy tc t chc qun l nhn vin ca mt cng ty nh sau: Thng tin v mt nhn vin bao gm l lch v bng chm cng: * L lch nhn vin: - M nhn vin - Tn nhn vin - Tnh trng gia nh - S con - Trnh vn ho - Lng cn bn * Chm cng nhn vin: : chui 10 k t : chui 30 k t : 1 k t (M = Married, S = Single) : s nguyn 20 : chui 2 k t (C1 = cp 1, C2 = cp 2, C3=cp 3; DH = i hc, CH = cao hc, TS = tin s) : s 1 000 000

Thc hnh Cu trc d liu v Gii thut 1

S ngy ngh c php trong thng S ngy ngh khng php trong thng S ngy lm thm trong thng Kt qu cng vic

Lng thc lnh trong thng

: s 28 : s 28 : s 28 : chui 2 k t (T = tt, TB = trung bnh, K = Km) : s 2 000 000

Quy tc tnh lng: Lng thc lnh = Lng cn bn + Ph tri Trong nu: s con > 2 : Ph tri = +5% Lng cn bn trnh vn ho = CH : Ph tri = +10% Lng cn bn lm thm : Ph tri = +4% Lng cn bn / 1 ngy ngh khng php : Ph tri = -5% Lng cn bn / 1 ngy Cc chc nng yu cu: Cp nht l lch, bng chm cng cho nhn vin (thm, xa, sa mt hay mi mu tin tho mn mt tnh cht no ) Xem bng lng hng thng Khai thc (chng hn tm) thng tin ca nhn vin Hy chn cu trc d liu thch hp (v gii thch ti sao?) biu din cc thng tin trn v ci t chng trnh theo cc chc nng m t. Bit rng s nhn vin ti a l 50 ngi, ch cc thng tin tnh v ng hay thay i v l h qu ca nhng thng tin khc.

Thc hnh Cu trc d liu v Gii thut 1

Chng 2: TM KIM V SP XP
BI THC HNH S 2
Cc phng php tm kim
(4 tit) Mc tiu
Ci t cc phng php tm kim, so snh cc phng php.

Ni dung l thuyt
0. PHT BIU BI TON Cho dy a gm N phn t, cn tm x trong dy a. 1. CC PHNG PHP TM KIM a) Phng php tm kim tuyn tnh tng So snh x ln lt vi phn t th 1, th 2,ca dy a cho n khi gp phn t c kha cn tm, hoc tm ht dy m khng thy x. Gii thut Bc 1: i = 1; // bt u t phn t u tin ca dy Bc 2: So snh a[i] vi x. + Nu a[i] = x: Tm thy. Dng. + Nu a[i] x: Sang Bc 3. Bc 3: i = i + 1; // xt tip phn t k trong dy Nu i N : lp li Bc 2. Ngc li: Ht dy. Khng tm thy. Dng

b) Phng php tm kim tuyn tnh c lnh canh tng t mt phn t c gi tr x vo cui dy, gi y l phn t lnh canh. Nh vy, ta bo m lun tm thy x trong dy, v da vo v tr tm thy a ra kt lun. Phng php ci tin ny gip gim bt mt php so snh trong vng lp.

Thc hnh Cu trc d liu v Gii thut 1

Gii thut Bc 1: i = 1; a[N+1] = x; Bc 2: So snh a[i] vi x. + Nu a[i] = x: Sang Bc 3 + Nu a[i] x: i = i + 1; Lp li bc 2. Bc 3: Nu i N : tm thy x ti v tr i. Ngc li: khng tm thy x trong dy. c) Phng php tm kim nh phn tng i vi nhng dy s c th t (tng dn), cc phn t c quan h ai-1 ai ai+1. Nu x > ai th x ch c th xut hin trong on [ai+1, aN], ngc li nu x < ai th x ch c th xut hin trong on [a1, ai-1]. Gii thut p dng nhn xt trn gii hn phm vi tm kim sau mi ln so snh x vi mt phn t trong dy. Ti mi bc, so snh x vi phn t nm gia dy tm kim hin hnh, da vo kt qu so snh quyt nh gii hn ca dy tm kim bc k tip l na trn hay na di ca dy hin hnh. Gii thut Bc 1: left = 1; right = N; // tm kim trn tt c cc phn t // ly mc so snh Bc 2: mid = (left + right)/2; So snh a[mid] vi x + a[mid] = x: Tm thy. Dng. + a[mid] > x: Tm tip x trong dy con aleft..amid-1 right = mid 1; + a[mid] < x: Tm tip x trong dy con amid+1..aright left = mid + 1; Bc 3: Nu left right Lp li bc 2. // cn phn t cha xt Ngc li: Khng tm thy x trong dy. Dng // phn t lnh canh

Thc hnh Cu trc d liu v Gii thut 1

2. BI TP 1. Ci t cc thut ton tm kim 2. Xy dng v ci t thut ton tm: a) Phn t ln nht (hay nh nht). b) Tt c cc s nguyn t. c) Tm phn t u tin trn dy m tha mt tnh cht TC no . d) Dy con (l mt dy cc phn t lin tip ca dy) tng di nht trong mt dy cc phn t cho trc c ci t bng mng.

Yu cu
Nm vng ni dung l thuyt v cc bi thc tp tin hnh. K thut lp trnh module.

Thc hnh Cu trc d liu v Gii thut 1

10

BI THC HNH S 3 Cc phng php sp xp


(4 tit) Mc tiu
Ci t v s dng cc phng php sp xp: sp xp chn, sp xp chn, sp xp i ch.

Ni dung l thuyt
0. PHT BIU BI TON SP XP Xt mt dy a gm N phn t. Cn sp xp cc phn t ca dy thu c mt dy c th t (v d tng dn/gim dn theo mt kha c ch nh). Cc thut ton sp xp c trnh by sau y gi s dy a l mt dy s nguyn. 1. PHNG PHP SP XP CHN tng: Chn phn t nh nht x trong N phn t ban u, o v tr ca x vi phn t u dy a x v u dy. Ta khng quan tm n phn t u dy na, xem dy by gi ch cn N-1 phn t, bt u t v tr th 2. Lp li x l trn cho n khi dy hin hnh ch cn mt phn t. Gii thut: Bc 1: i = 1 Bc 2: Tm phn t a[min] nh nht trong dy a[i..N]. Bc 3: Hon v a[min] v a[i] Bc 4: Nu i N 1 th i = i + 1. Lp li Bc 2 Ngc li: Dng. 2. PHNG PHP SP XP CHN a) Sp xp chn n gin (Insertion Sort) tng Xt dy a1, a2., an, trong i-1 phn t u tin a1, a2,,an c th t. Tm v // N-1 phn t nm ng v tr.

Thc hnh Cu trc d liu v Gii thut 1

11

tr thch hp chn phn t ai vo v tr thch hp trong i-1 phn t sp c dy mi a1, a2,,ai tr nn c th t. V tr ny nm gia ak-1 v ak tha ak-1 ai < ak (1 k < i). Gii thut Bc 1: i = 2 vo. Bc 3: Di ch cc phn t t a[pos] n a[i-1] sang phi 1 v tr dnh ch cho a[i]. Bc 4: a[pos] = x; Bc 5: i = i +1; Nu i n : lp li bc 2. Ngc li: Dng b) Sp xp chn ci tin (Shell Sort) tng Shell Sort l phng php ci tin ca Insertion Sort. Phn chia dy ban u thnh nhng dy con gm cc phn t cch nhau h v tr. Dy con th nht: a1, ah+1, a2h+1 Dy con th hai: a2, ah+2, a2h+2 .. Dy con th h: ah, a2h, a3h Sp xp cc phn t trong cng dy con s lm cho cc phn t c a v v tr ng tng i (so vi ton b cc phn t trong dy ban u c th cha ng). Gim khong cch h to cc dy con mi v li tip tc sp xp. Thut ton dng khi h = 1, lc ny bo m tt c cc phn t trong dy ban u c so snh vi nhau xc nh trt t ng cui cng. Gii thut Bc 1: Chn k khong cch h[1], h[2],, h[k]; i = 1; Bc 2: Phn chia dy ban u thnh cc dy con cch nhau h[i] khong cch. Sp xp tng dy con bng Insertion Sort. Bc 3: i = i + 1; Nu i k : Lp li bc 2 Nu i > k: Dng // c on a[1]..a[i] c sp // Gi s c on a[1] c sp Bc 2: x = a[i]; Tm v tr pos thch hp trong on a[1] n a[i-1] chn a[i]

Thc hnh Cu trc d liu v Gii thut 1

12

3. PHNG PHP SP XP I CH a) Sp xp i ch n gin (Bubble Sort) tng Xt dy gm N phn t Xut pht t cui dy, i ch cc cp phn t k cn a phn t nh hn trong cp phn t v v tr u dy hin hnh. Ta khng quan tm n phn t u dy na, xem dy by gi ch cn N-1 phn t, bt u t v tr th 2. Lp li x l trn cho n khi khng cn cp phn t no xt. Gii thut Bc 1: i = 1; Bc 2: j = N; // Duyt t cui dy ngc v v tr i Trong khi j > i thc hin Nu a[j] < a[j-1]: hon v a[j] v a[j-1]; // xt cp phn t k cn j = j - 1; Bc 3: i = i + 1 Nu i N 1 : Lp li bc 2. Ngc li: Ht dy. Dng. b) Sp xp i ch ci tin (Shaker Sort) tng Shaker Sort cng da trn nguyn tc i ch trc tip nhng tm cc khc phc nhc im ca Bubble Sort. Trong mi ln sp xp, duyt mng theo 2 lt t 2 pha khc nhau. Lt i: y phn t nh v u mng Lt v: y phn t ln v cui mng Ghi nhn li nhng on sp xp nhm tit kim cc php so snh tha. Gii thut Bc 1: l = 1; r = n; k = n; // t l n r l on cn sp xp // ghi nhn v tr k xy ra hon v sau cng // lm c s thu hp on l n r.

Thc hnh Cu trc d liu v Gii thut 1

13

Bc 2: Bc 2a: j = r; // y phn t nh v u mng Trong khi (j > l) thc hin Nu a[j] < a[j-1]: hon v a[j] v a[j-1]; k = j; // lu li ni xy ra hon v. j = j 1; l = k; // loi cc phn t c th t u dy Bc 2b: j = l; // y phn t ln v cui mng Trong khi (j < r) thc hin Nu a[j] > a[j-1]: hon v a[j] v a[j+1]; k = j; // lu li ni xy ra hon v. j = j + 1; r = k; // loi cc phn t c th t cui dy Bc 3: Nu l < r : Lp li bc 2. Ngc li: Dng. BI TP 1. Ci t cc phng php sp xp trn. 2. T chc hm main theo dng menu cho php ngi dng la chn phng php sp xp cn p dng.

Thc hnh Cu trc d liu v Gii thut 1

14

BI THC HNH S 4
Cc phng php sp xp (tt)
(4 tit)

Mc tiu
Ci t v s dng cc phng php sp xp: phn hoch, trn cy c th t, trn, da trn c s.

Ni dung l thuyt
1. QUICK SORT

tng Chn x l gi tr ca mt phn t ty trong dy ban u. V tr phn t thng c chn l k = (l + r)/2. Thc hin phn hoch vi x: ak < x k = 1..i ak = x k = i..j ak > x k = j..N

Dy ban u c chia lm 3 phn, trong dy con th 2 c th t. Dy ban u ch c th t nu dy con 1 v 3 cng c th t. Nu dy con 1 v 3 ch c mt phn t th chng c th t, ngc li, ta ln lt tin hnh phn hoch tng dy con theo phng php phn hoch nh trn. Gii thut phn hoch Bc 1: Chn ty mt phn t a[k] trong dy l gi tr mc, l k r Bc 2: Pht hin v hiu chnh cp phn t a[i], a[j] nm sai ch: Bc 2a: Trong khi (a[i] < x) i++; Bc 2b: Trong khi (a[j] > x) j--; Bc 2c: Nu i < j // a[i] x a[j] m a[j] ng sau a[i] Hon v a[i] v a[j]; i ++; j--; Bc 3: Nu i j: Lp li bc 2. // cha xt ht mng Nu i > j: Dng

Thc hnh Cu trc d liu v Gii thut 1

15

Gii thut Quick Sort C th pht biu gii thut sp xp Quick Sort mt cch qui nh sau: Bc 1: Phn hoch dy a1ar thnh cc dy con Dy con 1: a1..aj x Dy con 1: aj+1..ai-1 = x Dy con 1: ai..ar x Bc 2: Nu (l < j) // dy con 1 c nhiu hn mt phn t Phn hoch dy a1..aj Nu (i < r) // dy con 3 c nhiu hn mt phn t Phn hoch dy ai..ar
2. HEAP SORT

tng

Xt dy gm N phn t Hiu chnh dy thnh heap. o v tr ca phn t u dy vi phn t cui dy a phn t ln nht v cui dy. Ta khng quan tm n phn t cui dy na, xem nh dy hin hnh ch gm N-1 phn t, tnh t 1. Lp li x l trn cho n khi dy hin hnh ch cn mt phn t. Giai on 1: Hiu chnh dy s ban u thnh Heap Giai on 2: Sp xp dy s da trn Heap Bc 1: a phn t ln nht v v tr ng cui dy: r = n; Hon v (a1, ar); Bc 2: Loi b phn t ln nht ra khi heap: r = r 1; Hiu chnh phn cn li ca dy a1, a2,, ar thnh mt Heap. Bc 3: Nu r > 1 (heap cn phn t): Lp li bc 2 Ngc li: Dng.

Gii thut

Da trn tnh cht 3 ca Heap, ta c th thc hin giai on 1 bng cch bt u t heap mc nhin an/2+1, an/2+2, ., an, ln lt thm vo cc phn t an/2, an/2-1, ., a1 ta s nhn c heap theo mong mun.

Thc hnh Cu trc d liu v Gii thut 1 3. MERGE SORT

16

tng Gi k l chiu di ca mt dy con Phn chia dy ban u thnh cc dy con c di k, cc dy con ny c phn phi lun phin vo 2 dy ph. Trn tng cp dy con ca 2 dy ph thnh mt dy con ca dy ban u, cui cng ta s thu c dy ban u c s lng dy con gim phn na. Tng di k, lp li qui trnh trn sau mt s bc ta s thu c dy ch gm 1 dy con, tc l dy ban u c sp xp. Gii thut Bc 1: k = 1; // k l chiu di ca dy con trong bc hin hnh Bc 2: Tch dy a1, a2,, an thnh 2 dy b, c theo nguyn tc lun phin tng nhm k phn t: b = a1,, ak, a2k+1, ,a3k, c = ak+1,, a2k+1, a3k+1, ,a4k, Bc 3: Trn tng cp dy con gm k phn t ca 2 dy b, c vo a. Bc 4: k = k*2; Nu k < n : Lp li bc 2. Ngc li: Dng.
4. RADIX SORT

tng Radix Sort da trn nguyn tc phn loi th ca bu in. N khng quan tm n vic so snh gi tr ca phn t v bn thn vic phn loi v trnh t phn loi s to ra th t cho cc phn t. Gii thut thc hin nh sau: Trc tin, ta gi s mi phn t ai trong dy a1, a2, ., an l mt s nguyn c ti a m ch s.

Thc hnh Cu trc d liu v Gii thut 1

17

Phn loi cc phn t ln lt theo cc ch s hng n v, hng chc, hng trm

Gii thut Bc 1: // k cho bit ch s dng phn loi hin hnh. k = 0; // k = 0: hng n v; k = 1: hng chc; Bc 2: // To cc l cha cc loi phn t khc nhau. Khi to 10 l B0, B1,, B9 rng; Bc 3: For i = 1..n do t ai vo l Bt vi t = ch s th k ca ai ; Bc 3: Ni B0, B1,, B9 li theo ng trnh t thnh a. Bc 4: k = k + 1. Nu k < m: lp li bc 2. Ngc li: Dng BI TP 1. Ci t cc phng php sp xp trn 2. T chc hm main theo dng menu cho php ngi dng la chn phng php sp xp cn p dng.

Thc hnh Cu trc d liu v Gii thut 1

18

BI THC HNH S 5
p dng Cc phng php Sp xp v Tm Kim
(4 tit)
1) Mi sinh vin c qun l mt h thng trng X c bao gm: h v tn, nm sinh v a ch email. d dng trong vic qun l, ngi ta cn mt chng trnh thc hin c 2 thao tc c bn l sp xp v tm kim c m t nh sau: Tm kim o Thc hin tm kim tuyn tnh theo tn, nm sinh v a ch email. o Thc hin tm kim nh phn trn danh sch sau khi sp xp. Sp xp o Shaker Sort: Sp xp tng dn theo h v tn. o Quick Sort ( qui): Sp xp tng dn theo a ch email. o Binary Insertion Sort: Sp xp tng dn theo nm sinh. Hy: a) Khai bo cu trc d liu ph hp. b) Xc nh cc hm/th tc cn thit ca chng trnh. c) Vit chng trnh thc hin cc hot ng qun l sinh vin tha mn cc yu cu ca trng X (nh m t bn di). 2) Vit chng trnh thc hin sp xp mt dy gm N (N 100) s nguyn vi cc thut ton sp xp hc: Selection Sort, Quick sort, Merge sort, Shell sort v Heap sort. Trong , yu cu c th nh sau: a) Selection Sort: S m tng dn v cui dy, s khng m gim dn v u dy. b) Quick Sort: Sp tng dn theo tr tuyt i. c) Merge Sort: Trn theo c 2 cch (t nhin v trc tip). Sp tng dn. d) Shell Sort: Sp tng dn vi bc chy ty chn (nn ly theo sch). e) Heap Sort: Sp gim dn.

Thc hnh Cu trc d liu v Gii thut 1

19

Chng 3: CU TRC DANH SCH LIN KT


BI THC HNH S 6
Danh sch lin kt n
(8 tit) Mc tiu
Lm vic vi kiu d liu con tr. Ci t danh sch lin kt n khng c nt cm.

Ni dung l thuyt
1. CU TRC D LIU CA DANH SCH LIN KT

Data

Next

Khai bo danh sch lin kt s nguyn typedef int ElementType; typedef struct node { ElementType Data; //Trng d liu struct node *Next; // Trng lu a ch nt k tip }NodeType; typedef NodeType *NodePointer; //nh ngha kiu con tr nt //nh ngha kiu danh sch lin kt typedef struct { NodePointer Head, Tail; } LL; //Khai bo danh sch lin kt LL List 2. CC THAO TC C BN TRN DANH SCH LIN KT a) To mt nt ca danh sch. b) Thm mt phn t vo danh sch (chn u, chn cui, chn vo sau mt nt). c) Duyt danh sch.

Thc hnh Cu trc d liu v Gii thut 1

20

d) Tm mt phn t trn danh sch. e) Xa phn t khi danh sch. f) Sp xp trn danh sch. 3. BI TP Vit chng trnh thc hin: 1. To danh sch lin kt vi d liu c nhp vo t bn phm (cc phn t c chn vo cui danh sch). 2. To bn sao ca mt DSLK cho trc. 3. Ni hai DSLK cho trc. 4. Tnh s lng cc nt d liu. 5. Tm nt d liu u tin trong DSLK tha mt tnh cht no , chng hn: - nt th k, - hoc c trng d liu trng vi mt gi tr cng kiu K cho trc. Nu c th tr v con tr ch n nt ng trc nt tm thy. 6. Xa mt (hay mi) nt d liu trong DSLK tha mt tnh cht no , v d: - nt th k, - hoc c trng d liu trng vi mt gi tr cng kiu K cho trc. 7. Thm mt nt L vo sau mt (hay mi) nt d liu trong DSLK tha mt tnh cht no , chng hn: - nt th k, - hoc c trng d liu trng vi mt gi tr cng kiu K cho trc. 8. o ngc DSLK ni trn theo hai cch: - to DSLK mi - sa li chiu con tr trong DSLK ban u. 9. Gi M l con tr ch ti mt nt c trong DSLK trn v P l con tr ch ti mt DSLK khc cng loi. Hy chn DSLK P ny vo sau nt tr bi M. 10. Tch thnh 2 DSLK m DS sau c tr bi M (gi thit nh cu h). 11. So snh 2 DSLK (c trng d liu ca cc nt lin tip tng ng bng nhau hay khng ?). 12. Sp xp danh sch. 13. Hy vit thut ton v chng trnh trn hai DSLK tng A, B cho trc thnh mt DSLK C cng tng theo hai cch: a. C l DSLK mi (cp pht b nh mi cho mi nt ca C) v bo ton hai DSLK c A, B; b. C l DSLK mi do A, B hp thnh (do i ch v tr cc con tr sn c trn A, B). Khi cu trc hai DSLK A, B c th b thay i.

Thc hnh Cu trc d liu v Gii thut 1

21

BI THC HNH S 7
p dng Danh sch lin kt
(8 tit) Mc tiu
p dng cu trc danh sch vo mt bi ton c th.

BI TP
1) Mt ca hng tp ho cn lu li thng tin cc mt hng gm: Tn mt hng v s lng tn (s lng tn 0). Cc thao tc nghip v v vic xut nhp hng bao gm cc thao tc n gin sau: Nhp hng: thng tin nhp hng bao gm: tn mt hng, s lng nhp kho tng ng. Nu mt hng c trong danh mc mt hng th cng dn s lng nhp vo s lng tn ca mt hng , ngc li th thm thng tin mt hng mi vo danh mc. Xut hng. Thng tin xut hng bao gm: tn mt hng, s lng xut kho tng ng. Khi xut mt hng no th s lng tn ca mt hng s c gim tng ng vi s lng yu cu xut. Loi b hon ton mt mt hng. Thng tin cn cung cp bao gm: tn mt hng cn loi b. (Mt hng X sau khi loi b s khng cn c lu tr.) Sp xp danh mc mt hng theo tn mt hng tng dn. Xem danh mc cc mt hng. Gi s danh mc hng ha trn c lu bng danh sch lin kt, hy: a) Khai bo cu trc d liu ph hp cho danh sch lin kt. b) Xy dng cc hm cn thit ca chng trnh. c) Vit chng trnh thc hin cc nghip v qun l hng ha trn. 2) Cho n s nguyn dng (n>1). Hy xy dng mt danh sch lin kt cha n s nguyn dng trn v thc hin cc thao tc sau: a) Xut ra cc s cc i a phng v cc tiu a phng cng vi v tr ca n trong danh sch V d : Nhp chui s nguyn t tp tin : 1, 2, 8, 9, 75, 65, 81, 36, 47, 61, 55, 63 Cc cc i a phng : 75, 81 , 61, 63 Cc cc tiu a phng : 1, 65, 36, 55 b) Xa i tt c cc phn t trng nhau (gi li mt phn t trong s , phn t no cng c).

Thc hnh Cu trc d liu v Gii thut 1

22

c) Hy tm tt c cc s nguyn t c trong xu v thay bng s nguyn t lin sau

n (v d: 3 thnh 5, 5 thnh 7, 13 thnh 17) d) Sp xp li xu trn tng dn theo cc thut ton sau: Selection Sort Insertion Sort e) Thc hin ln lt thm vo danh sch m phn t sao cho phn t c thm vo v tr sao cho nh hn hoc bng phn t trc n v ln hn hoc bng phn t sau n. Nu n khng tm c v tr nh vy s c thm vo cui danh sch. Nu c nhiu hn 1 v tr thch hp th chn v tr u tin. 3) Xy dng cu trc d liu biu din a thc. Vit cc thao tc trn a thc: tnh gi tr, tnh o hm, cng tr a thc. P(x) =

ck x k + ck 1 x k 1 + ... + c1 x + c0

4) Tnh ton s ln: Vit cu trc s nguyn ln ( > 50 ch s ) dng danh sch lin kt. Thc hin cc thao tc c bn tnh ton s nguyn: cng, tr, nhn

Thc hnh Cu trc d liu v Gii thut 1

23

BI THC HNH S 8
Cc Thao Tc Trn Stack Queue
(8 tit) Mc tiu
Lm vic vi Stack v Queue Ci t Stack v Queue

Ni dung l thuyt
1. NGN XP (STACK) Ngn xp l mt danh sch m 2 php thm v loi b u c thc hin trn mt u. Nh vy, phn t no thm vo sau s b loi b trc, nn ngn xp cn c gi l danh sch LIFO ( Last In First Out list) hoc Pushdown list. Ngn xp c nhiu ng dng. V d: chng trnh A gi chng trnh B, chng trnh B gi chng trnh C. Khi chng trnh C c thc hin xong th s iu khin chng trnh s tr v thc hin chng trnh B, ri khi chng trnh B c thc hin xong th s iu khin chng trnh s tr v thc hin chng trnh A. Nh vy chng trnh B c gi sau s c tr v thc hin trc chng trnh A. l nh im nhp (entry point) tr v ca cc chng trnh c cha trong ngn xp.

Ngn xp c th c t chc theo danh sch lin kt. V php thm vo v php loi b ch c thc hin cng mt u nn ta ch cn mt con tr gi nh ca stack.

Thc hnh Cu trc d liu v Gii thut 1 Stack

24

Cu trc d liu ca Stack typedef .... ElementType; // Kiu d liu ca nt typedef struct node { ElementType Data; struct node *Next; } NodeType; typedef NodeType *NodePointer; NodePointer Stack; Cc php thao tc c bn a) Thao tc Push y mt mc d liu x vo nh ngn xp b) Thao tc Pop ly ra mt phn t nh ngn xp c) Thao tc Top xem mt phn t nh ngn xp 2. HNG I (QUEUE) Hng i l mt danh sch m php thm vo c thc hin u ny v loi b c thc hin u kia. Nh vy, phn t no vo trc s c loi b trc, phn t no vo sau s c loi b sau, nn hng i cn c gi l danh sch FIFO (First In First Out list). Cu trc d liu typedef int ElementType; typedef struct node { ElementType Data; struct node *Next; }NodeType; typedef NodeType *NodePointer; //nh ngha kiu con tr nt typedef struct { NodePointer Head, Tail; } LL;

Thc hnh Cu trc d liu v Gii thut 1

25

LL Queue; Cc thao tc c bn a) EnQueue(O): thm mt i tng O vo ui hng i; b) DeQueue(): ly ra mt i tng u hng i v tr v tr ca n, nu hng i rng s gp li; c) EmptyQueue(): kim tra xem hng i c rng hay khng; d) Front(): Tr v tr ca phn t u hng i m khng loi n khi hng i, nu hng i rng s gp li. BI TP 1) Cho 1 chui m t cc thao tc trn stack/queue gm cc k t ch ci v du * vi quy tc nh sau: Ch ci tng trng cho thao tc thm ch ci tng ng vo stack/queue. Du * tng trng cho thao tc ly ni dung mt phn t ra khi stack/queue. Thc hin chui thao tc ny trn stack/queue theo th t t tri sang phi.Sau khi hon tt, tin hnh ly ln lt tt c cc phn t cn li trong stack/queue, hy cho bit ni dung ly c. V d AAA**BCC*D Kt qu khi thao tc trn Stack l DCBA Kt qu khi thao tc trn Queue l BCCD 2) Vit chng trnh dng ngn xp thc hin chuyn i v biu din s nguyn dng N dng c s b (b = 2, 8,16). 3) Vit chng trnh tnh gi tr biu thc bng dy Balan ngc Thc hin qua 2 bc Bc 1: Chuyn biu thc t dng trung t (dng gc do ngi dng nhp vo) sang dng hu t. Bc 2: Tnh gi tr ca biu thc dng hu t, ta s c kt qu. Thut ton chuyn t dng trung t sang hu t Khi ng stack rng (Stack cha ton t) While (khng c li v cha ht biu thc) o c Token (Token = hng/bin/ton t s hc /ngoc tri/ngoc phi). o Nu Token l Ngoc tri (: Push vo stack.

Thc hnh Cu trc d liu v Gii thut 1

26

Ngoc phi ): Pop v hin th cc phn t ca stack n khi gp ngoc tri (pop ngoc tri nhng khng hin th ngoc tri). Ton t: Nu stack rng hay Token c u tin hn phn t nh stack th Push vo Stack .Ngc li (u tin bng hoc t u tin hn) pop v hin th 1 phn t nh stack .Lp li vic so snh Token vi 1 phn t nh stack. Ton hng : hin th n. Khi ht biu thc trung t Pop v hin th ton b stack cn li. Thut ton tnh gi tr biu thc hu t: Khi ng stack rng. Lp li cc bc sau n khi ht biu thc: o c Token (Hng, bin, ton t) o Nu Token l : Ton hng: Push vo stack Ton t: Pop 2 gi tr p dng ton t cho 2 gi tr ly ra. Push kt qu vo stack. Lp n ht biu thc ,gi tr nh stack l gi tr ca biu thc. u tin ca cc ton t ( < {+,-} < {*,/} VD: (2+3)*5 4*12/3+1 5*(2+3) 2 3 + 5 * : Sau khi chuyn t trung t sang hu t. 4 12 * 3 / 1: Sau khi chuyn t trung t sang hu t. 5 2 3 + * : Sau khi chuyn t trung t sang hu t.

Thc hnh Cu trc d liu v Gii thut 1

27

Chng 4: CU TRC CY
BI THC HNH S 9
Cy Nh Phn, Cy Nh Phn Tm kim
(8 tit) Mc tiu
Ci t cy nh phn, cy tm kim nh phn v cc thao tc.

Ni dung l thuyt
1. CU TRC D LIU CA CY NH PHN typedef ..... ElementType; /* Kiu mc d liu ca nt */ typedef struct TN { ElementType Data; // n gin, ta xem Data l trng kha ca d liu struct TN * LChild, *RChild; } TreeNode; typedef TreeNode *TreePointer;

2. CC THAO TC C BN
a) b) c) d) e) To mt nt ca cy Chn mt phn t vo cy Duyt cy: NLR, LNR, LRN Tm mt phn t c trn cy Xa phn t ca cy.

BI TP 1) Vit mt chng trnh c cc tc dng sau: a. Nhp t bn phm cc s nguyn vo mt cy nh phn tmkim (BST) m nt gc c tr bi con tr Root. b. Xut cc phn t trn cy BST trn theo th t: u, gia, cui. c. Tm v xa (nu c th) phn t trn cy Root c d liu trng vi mt mc d liu Item cho trc c nhp t bn phm. d. Sp xp n mc d liu (c ci t bng mng hay DSLK) bng phng php cy nh phn tm kim BSTSort. Yu cu: vit cc thao tc trn bng 2 phng php: quy v lp (*). 2) Cho cy nh phn T. Vit chng trnh cha cc hm c tc dng xc nh: a. Tng s nt ca cy. b. S nt ca cy mc k c. Chiu cao ca cy. d. Tng gi tr trng d liu (s!) trn cc nt ca cy.

Thc hnh Cu trc d liu v Gii thut 1

28

e. Kim tra xem n c phi l mt cy nh phn cht (l cy nh phn m mi nt khc nt l u c ng 2 con) hay khng? f. Kim tra xem T c phi l cy cn bng hon ton hay khng ? g. S nt c ng 2 con khc rng. h. S nt c ng 1 con khc rng. i. S nt c kha nh hn x trn cy nh phn hoc cy BST. j. S nt c kha ln hn x trn cy nh phn hoc cy BST. k. S nt c kha nh hn x v ln hn y (y x) trn cy nh phn hoc cy BST l. Duyt cy theo chiu rng. m. Duyt cy theo chiu su. n. lch ln nht ca cc nt trn cy ( lch ca mt nt l tr tuyt i ca hiu s gia chiu cao ca cy con phi v cy con tri ca n). o. o nhnh tri v phi ca mi nt trn mt cy nh phn.

Thc hnh Cu trc d liu v Gii thut 1

29

BI THC HNH S 10 Cc thao tc trn cy nh phn tm kim cn bng


(4 tit) Mc tiu
Ci t cy nh phn, cy nh phn tm kim cn bng. BI TP Ci t cc thao tc trn cy AVL. Cho php ngi dng la chn thc hin cc thao tc sau: 1. Kim tra mt node c thuc cy hay khng? 2. Insert mt node vo cy. 3. Delete mt node trong cy. Nu node c hai cy con th cho php chn phn t th ch thuc: a. Cy con tri. b. Cy con phi. 4. Duyt cy in ra cc node, theo th t: a. NLR. b. LNR. c. LRN. tin dng, yu cu 2, 3 cn thc hin vng while cho n khi ngi dng khng mun insert hay delete na.

Thc hnh Cu trc d liu v Gii thut 1

30

CC BI KIM TRA (4 tit)


Bi kim tra s 1: Thi gian: 2 tit (90 pht) Hnh thc: Thc hnh trn my Ni dung: Kiu d liu c cu trc p dng cc phng php tm kim v sp xp Bi kim tra s 2: Thi gian: 2 tit (90 pht) Hnh thc: Thc hnh trn my Ni dung: Cc kiu danh sch v ng dng

TI LIU THAM KHO


[1] Trng Ch Tn, Cu trc d liu v Gii thut 1 (Gio trnh tm tt), i hc Lt, 2008 [2] A.V. AHO , J.E. HOPCROFT , J.D. ULMANN: Data structures and algorithms. Addition Wesley - 1983. [3] DONALD KNUTH: The Art of Programming. (vol.1: Fundamental Algorithms, vol. 3: Sorting and Searching). Addition Wesley Puplishing Company - 1973. [4] INH MNH TNG: Cu trc d liu v thut ton. NXB KHKT - 2001. [5] XUN LI: Cu trc d liu v thut ton. NXB KHKT - 1995. [6] LARRY N. HOFF, SANFORD LEESTMA: Lp trnh nng cao bng Pascal vi cc cu trc d liu. Bn dch ca L Minh Trung. Cng ty Scitec - 1991. [7] NGUYN TRUNG TRC: Cu trc d liu. Trung tm in ton, trng H Bch khoa TP. HCM 1992. [8] NIKLAUS WIRTH: Cu trc d liu + Gii thut = Chngtrnh (Nguyn Quc Cng dch). NXB H v THCN 1991 [9] TRN HNH NHI & DNG ANH C: Nhp mn cu trc d liu v thut ton. Khoa Cng ngh thng tin, H KHTN TP HCM 2000.

You might also like