You are on page 1of 17

THI TRC NGHIM MN CU TRC D LIU V GII THUT LP CDTH8K (Hc k I nm hc 2007 2008) Ngy thi: 26/12/2007 B thi:

i: 221 Thi gian: 60 pht (Sinh vin khng c s dng ti liu)


Cu 1. Thm phn t c vng gi tr l 44 ca cy nh phn tm kim cn bng s lm cy mt cn bng
BALTree

50

35

70

20

NULL 40

NULL

Sau khi thm, cy c cn bng lai a.


BALTree

NULL

NULL

NULL

NULL

b.
BALTree

40
44

35

50

35

50

NULL 20 44 70
20 40 NULL 70

c. Ca a, b u sai.

NULL

NULL

NULL

NULL NULL

NULL

d. Ca a, b u ung.

NULL

NULL NULL

NULL

NULL

NULL

Cu 2. Tm m t ng nht cho hm TinhTong sau int TinhTong(int N) { int so = 2; int tong = 0; int dem = 0; while (dem <N) { if (KiemTra(so) == 1) { tong = tong + so; dem ++; } so = so + 1; } return tong; } Trong int KiemTra(int so) { for (int i = 2; i<so; i++) if (so%i == 0) return 0; return 1; } Mn: Cu trc d liu v gii thut

a. Hm tnh tng N s nguyn u tin b. Hm tnh tng N s nguyn t nh hn N c. C a, b u sai d. C a, b u ng Cu 3. Mi quan h gia cu trc d liu v gii thut c th minh ha bng ng thc: a. Cu trc d liu + Gii thut = Chng trnh b. Cu trc d liu + Chng trnh = Gii thut c. Chng trnh + Gii thut = Cu trc d liu d. Cu trc d liu = Chng trnh Cu 4. Cc tiu chun nh gi cu trc d liu. nh gi mt cu trc d liu chng ta thng da vo mt s tiu ch a. Cu trc d liu phi tit kim ti nguyn (b nh trong), b. Cu trc d liu phi phn nh ng thc t ca bi ton, c. Cu trc d liu phi d dng trong vic thao tc d liu. d. C a, b, c u ng Cu 5. on m gi di y m t thut ton g? Thut ton: B1: k = 1 B2: IF M[k] == X AND k != N B2.1: k++ B2.2: Lp li B2 B3: IF k < N Thng bo tm thy ti v tr k B4: ELSE Khng tm thy. B5: Kt thc a. Tm nh phn phn t c gi tr X b. Tm phn t nh nht ca mng M bao gm N phn t c. Tm tuyn tnh phn t c gi tr X d. C a, b, c u sai Cu 6. Cho hm tm kim tuyn tnh nh sau int TimKiem (int M[], int N, int X) { int k = 0; M[N] = X; while (M[k] != X) k++; if (k < N) return (k); return (-1); } Chn cu ng nht: a. Hm s tr v 0 nu khng tm thy phn t c gi tr l X b. Hm s tr v 1 nu tm thy phn t c gi tr l X c. Hm s tr v -1 nu khng tm thy phn t c gi tr l X d. Hm s tr v 1 nu khng tm thy phn t c gi tr l X Cu 7. Xt th tc sau: int TimKiemNP (int M[], int First, int Last, int X) { if (First > Last) return (-1); int Mid = (First + Last)/2; if (X == M[Mid]) return (Mid); Mn: Cu trc d liu v gii thut 2

if (X < M[Mid]) return(TimKiemNP (M, First, Mid 1, X)); else return(TimKiemNP (M, Mid + 1, Last, X)); } La chn cu ng nht m t th tc trn a. Th tc h tr tm kim phn t c gi tr l X trn mng cc phn t t ch s t First n ch s Last b. Th tc h tr tm kim quy phn t c gi tr l X trn mng cc phn t t ch s t First n ch s Last c. Th tc h tr tm kim quy phn t c gi tr l X trn mng cc phn t t ch s t Last n ch s First d. Th tc h tr tm kim khng quy phn t c gi tr l X trn mng cc phn t t ch s t Last n ch s First Cu 8. Chn cu ng nht m t thut ton sp xp ni bt (Bubble Sort) trn mng M c N phn t: a. i t cui mng v u mng, trong qu trnh i nu phn t di (ng pha sau) nh hn phn t ng ngay trn (trc) n th hai phn t ny s c i ch cho nhau. Sau mi ln i chng ta a c mt phn t tri ln ng ch. Sau N1 ln i th tt c cc phn t trong mng M s c th t tng. b. i t u mng v cui mng, trong qu trnh i nu phn t di (ng pha sau) nh hn phn t ng ngay trn (trc) n th hai phn t ny s c i ch cho nhau. Sau mi ln i chng ta a c mt phn t tri ln ng ch. Sau N ln i th tt c cc phn t trong mng M s c th t tng. c. i t cui mng v u mng, trong qu trnh i nu phn t di (ng pha sau) nh hn phn t ng ngay trn (trc) n th hai phn t ny s c i ch cho nhau. Sau mi ln i chng ta a c mt phn t tri ln ng ch. Sau N ln i th tt c cc phn t trong mng M s c th t tng. d. C a, b, c u sai Cu 9. Hm m t sp xp ni bt (Bubble Sort) trn mng M c N phn t void BubbleSort(int M[], int N) { int Temp; for (int I = 0; I < N-1; I++) .. if (M[J] < M[J-1]) { Temp = M[J]; M[J] = M[J-1]; M[J-1] = Temp; } return; } Lnh no sau y s c a vo dng lnh th [5] ca th tc a. for (int J = N-1; J > I; J++) b. for (int J = N; J < I; J--) c. for (int J = N-1; J > I; J--) d. Khng c dng lnh no ph hp, khng cn thm vo thut ton vn chy ng Cu 10. Th tc m t thut ton sp xp chn trc tip (Straight Selection Sort): void SapXepChonTrucTiep(T M[], int N) { int K = 0, PosMin; int Temp; while (K < N-1) { T Min = M[K]; PosMin = K; for (int Pos = K+1; Pos < N; Pos++) if (Min > M[Pos]) { Min = M[Pos]; PosMin = Pos Mn: Cu trc d liu v gii thut 3 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]

} ................................... ................................... ................................... K++; } return; } Chn cu lnh thch hp a vo [1], [2], [3] vi mc tiu hon v M[K] v M[PosMin] a. Temp = M[K] ; Temp = M[PosMin]; M[PosMin] = Temp; b. M[K] = Temp; M[K] = M[PosMin]; M[PosMin] = Temp ; c. Temp = M[K] ; M[PosMin] = M[K]; M[PosMin] = Temp ; d. Temp = M[K] ; M[K] = M[PosMin]; M[PosMin] = Temp ;

[1] [2] [3]

Cu 11. i vi thut ton sp xp chn trc tip cho dy cc phn t sau (10 pt) 16 60 2 25 15 45 5 30 33 20 Cn thc hin ..................... chn la phn t nh nht sp xp mng M c th t tng dn. a. 7 ln b. 8 ln c. 9 ln d. 10 ln Cu 12. Thut ton sp xp chn trc tip (Straight Insertion Sort) c m t bng on m gi nh sau: B1: K = 1 B2: IF (K = N) Thc hin BKT B3: X = M[K+1] B4: Pos = 1 B5: IF (Pos > K) Thc hin B7 B6: ELSE // Tm v tr chn B6.1: If (X <= M[Pos]) Thc hin B7 B6.2: Pos++ B6.3: Lp li B6.1 B7: I = K+1 B8: IF (I > Pos) B8.1: M[I] = M[I-1] B8.2: I-B8.3: Lp li B8 B9: ELSE B9.1: M[Pos] = X B9.2: K++ B9.3: Lp li B2 BKT: Kt thc Trong B8 m t trng hp a. Nu cn phi di cc phn t t Pos->I v pha sau 1 v tr b. Nu cn phi di cc phn t t Pos->K+1 v pha sau 1 v tr Mn: Cu trc d liu v gii thut 4

c. Nu cn phi di cc phn t t Pos->K v pha sau 1 v tr d. Nu cn phi di cc phn t t Pos->I+1 v pha sau 1 v tr
Cu 13. Gi s cn sp xp mng M c N phn t sau theo phng php sp xp chn trc tip 11 16 12 75 51 54 5 73 36 52 98 Cn thc hin ..................... chn cc phn t vo dy con c th t tng ng u dy M sp xp mng M c th t tng dn. a. 9 ln b. 10 ln c. 8 ln d. 7 ln Cu 14. La chn nh ngha v danh sch ng nht a. Danh sch l tp hp cc phn t c kiu d liu xc nh v gia chng c mt mi lin h no . b. S phn t ca danh sch gi l chiu di ca danh sch. c. Mt danh sch c chiu di bng 0 l mt danh sch rng. d. C a, b, c u ng Cu 15. Tm m t ng cho hm sau: int SC (int M[], int Len, int CM[]) { for (int i = 0; i < Len; i++) CM[i] = M[i]; return (Len); } a. Hm thc hin vic sao chp ni dung mng CM c chiu di Len v mng M c cng chiu di. Hm tr v chiu di ca mng M sau khi sao chp. b. Hm thc hin vic sao chp ni dung mng M c chiu di Len -1 v mng CM c cng chiu di. Hm tr v chiu di ca mng CM sau khi sao chp. c. Hm thc hin vic sao chp ni dung mng CM c chiu di Len -1 v mng M c cng chiu di. Hm tr v chiu di ca mng M sau khi sao chp. d. Hm thc hin vic sao chp ni dung mng M c chiu di Len v mng CM c cng chiu di. Hm tr v chiu di ca mng CM sau khi sao chp. Cu 16. Cu trc d liu mng c cc u im no a. Vic thm, bt cc phn t trong danh sch c c nhiu kh khn do phi di di cc phn t khc i qua ch khc. b. Vic truy xut v tm kim cc phn t ca mng l d dng v cc phn t ng lin nhau nn chng ta ch cn s dng ch s nh v v tr cc phn t trong danh sch (nh v a ch cc phn t); c. Mt s dng b nh ca mng l ti u tuyt i d. Cu a, b, c ng Cu 17. nh ngha no l ng vi danh sch lin kt a. Danh sch lin kt l cu trc d liu dng cy. b. Danh sch lin kt l cu trc d liu t nh ngha. c. Danh sch lin kt l tp hp cc phn t m gia chng c mt s ni kt vi nhau thng qua vng lin kt ca chng. d. Danh sch lin kt l tp hp cc phn t m t k cn vi nhau trong vng nh. Cu 18. nh ngha cu trc d liu ca danh sch lin kt n c m t nh sau: typedef struct Node { int Key; Node * NextNode; } OneNode; Mn: Cu trc d liu v gii thut 5

Trong , khai bo Node * NextNode; dng m t a. Con tr tr ti phn d liu b. Vng lin kt qun l a ch phn t k tip c. Con tr tr ti a ch vng nh ca phn t trc trong danh sch lin kt n. d. Con tr tr ti a ch vng nh ca phn t u tin trong danh sch lin kt n. Cu 19. Vi cu trc d liu ca danh sch lin kt n lu tr thng tin v phng my typedef struct PM { int maPM; int tongsoMay; } PHONGMAY; typedef struct Node { PHONGMAY Data; Node * NextNode; } OneNode; typedef OneNode * SLLPointer; qun l danh sch lin kt n bng phn t u v phn t cui, cn nh ngha kiu d liu: a. SLLPointer DanhSach; b. typedef struct SSLLIST { SLLPointer First; SLLPointer Last; } LIST; LIST DanhSach; c. typedef struct SSLLIST { SLLPointer First; SLLPointer Last; int total; } LIST; LIST DanhSach; d. typedef struct SSLLIST { SLLPointer First; int total; } LIST; LIST DanhSach; Cu 20. T chc cu trc d liu cho danh sch lin kt n typedef struct Node { int Data; Node * Link; } OneNode; typedef OneNode * SLLPointer; M gi thut ton thm mt phn t c gi tr thnh phn d liu l NewData vo trong danh sch lin kt n SLList vo ngay sau nt c a ch InsNode: B1: NewNode = new OneNode B2: IF (NewNode = NULL) Thc hin BKT B3: NewNode ->Link = NULL B4: NewNode ->Data = NewData B5: IF (InsNode-> Link = NULL) B5.1: InsNode-> Link = NewNode B5.2: Thc hin BKT // Ni cc nt k sau InsNode vo sau NewNode B6: .. // Chuyn mi lin kt gia InsNode vi nt k ca n v NewNode Mn: Cu trc d liu v gii thut 6

B7: .. BKT: Kt thc B6 v B7 dng ni nt k sau InsNode vo sau NewNode v chuyn mi lin kt gia InsNode vi nt k n v NewNode. Hy chn cu ng nht cho B6 v B7 a. B6: InsNode-> Link = NewNode-> Link B7: NewNode = InsNode-> Link b. B6: InsNode-> Link = NewNode-> Link B7: InsNode-> Link = NewNode c. B6: NewNode-> Link = InsNode-> Link B7: NewNode = InsNode-> Link d. B6: NewNode-> Link = InsNode-> Link B7: InsNode-> Link = NewNode Cu 21. Vi nh ngha cu trc d liu cho danh sch lin kt n typedef struct Node { int Data; Node * Link; } OneNode; typedef OneNode * SLLPointer; Hm di y thm mt phn t c gi tr thnh phn d liu l NewData vo trong danh sch lin kt n SLList vo ngay sau nt c a ch InsNode. SLLPointer ThemGiua(SLLPointer &SList, int NewData, SLLPointer &InsNode) { SLLPointer NewNode = new OneNode; if (NewNode != NULL) NewNode ->NextNode = NULL; NewNode ->Data = NewData; else return (NULL); if (InsNode->Link == NULL) { InsNode-> Link = NewNode; return (SList); } . . return (SList); } Hy la chn cu ng nht a. InsNode -> Link = NewNode -> Link; InsNode-> Link = NewNode; b. NewNode-> Link = InsNode-> Link; InsNode-> Link = NewNode; c. InsNode -> Link = NewNode -> Link; NewNode = InsNode-> Link; d. NewNode-> Link = InsNode-> Link; NewNode = InsNode-> Link; Cu 22. Cu trc d liu no tng ng vi LIFO a. Queue b. Linked List c. Tree d. Stack Mn: Cu trc d liu v gii thut 7

Cu 23. La chn cu ng nht v danh sch lin kt i (Doubly Linked List) a. Vng lin kt ca mt phn t trong danh sch lin i c 02 mi lin kt vi 01 phn t khc trong danh sch. b. Vng lin kt ca mt phn t trong danh sch lin i c 01 mi lin kt vi 02 phn t khc trong danh sch. c. Vng lin kt ca mt phn t trong danh sch lin i c 02 mi lin kt vi 02 trc v sau n trong danh sch. d. Vng lin kt ca mt phn t trong danh sch lin i c 02 mi lin kt vi phn t u v cui ca danh sch. Cu 24: Cho cy nh phn sau:
23

19

50

NULL 40 21 210

NULL 6

NULL 77

NULL 919

NULL

NULL NULL NULL NULL NULL Sau khi xoay phi cy, chn cy ng nht a.
50 23 NULL 210

NULL

c.

19

NULL 919

NULL

40

21

NULL

NULL

NULL 6

NULL 77

NULL b.

NULL

NULL

NULL

d.
19

21 23 NULL 210

23 6

19

NULL 919

NULL

40
NULL

NULL

21 NULL 77

50

40

50

NULL

NULL NULL NULL

210

NULL 6

NULL 77

NULL

NULL

NULL 19

NULL

NULL

NULL

NULL

NULL

NULL

NULL

Cu 25: Cho thut ton tm nh phn khng quy sau int NRecBinarySearch (int M[], int N, int X) { int First = 0; int Last = N 1; while (First <= Last) { Mn: Cu trc d liu v gii thut 8

int Mid = (First + Last)/2; if (X == M[Mid]) return(Mid); if (X < M[Mid]) Last = Mid 1; else First = Mid + 1; } return(-1); } Chn cu ng nht trong trng hp tt nht khi phn t gia ca mng c gi tr bng X: a. S php gn: Gmin = 3 S php so snh: Smin = 2 b. S php gn: Gmin = 2 S php so snh: Smin = 3 c. S php gn: Gmin = 2 S php so snh: Smin = 2 d. S php gn: Gmin = 0 S php so snh: Smin = 2 Cu 26: Cho thut ton sp xp Bubble Sort nh sau: void BubbleSort(int M[], int N) { for (int I = 0; I < N-1; I++) for (int J = N-1; J > I; J--) if (M[J] < M[J-1]) Swap(M[J], M[J-1]); return; } Chn cu ng nht cho hm Swap a. void Swap(int &X, int &Y) { int Temp = X; X = Y; Y = Temp; return; } b. void Swap(float X, floatY) { int Temp = X; X = Y; Y = Temp; return; } c. void Swap(int *X, int *Y) { int Temp = X; X = Y; Y = Temp; return; }

d. void Swap(int X, intY)


{ int Temp = X; X = Y; Y = Temp; return; }

Cu 27: Cho cy biu thc sau Mn: Cu trc d liu v gii thut 9

Chn biu thc tng ng vi cy a. (2 * (4 + (5 + 3))) b. (4 * (2+ (5 + 3))) c. (2 * (3 + (5 +4))) d. (2 * (5 + (4+ 3))) Cu 28. Cho thut ton sau int LinearSearch (int M[], int N, int X) { int k = 0; while (M[k] != X k < N) k++; if (k < N) return (k); return (-1); } Chn cu ng nht trong trng hp xu nht khi khng tm thy phn t no c gi tr bng X: a. S php gn: Gmax = 1 S php so snh: Smax = 2N+1 b. S php gn: Gmax = 2 S php so snh: Smax = 2N+1 c. S php gn: Gmax = 1 S php so snh: Smax = 2N+2 d. S php gn: Gmax = 1 S php so snh: Smax = N+2 Cu 29. Cho thut ton sau int LinearSearch (float M[], int N, float X) { int k = 0; M[N] = X; while (M[k] != X) //n+1 lan k++; if (k < N) return (k); return (-1); } Chn cu ng nht trong trng hp xu nht khi khng tm thy phn t no c gi tr bng X: a. S php gn: Gmax = 1 S php so snh: Smax = N + 2 b. S php gn: Gmax = 2 S php so snh: Smax = N + 2 c. S php gn: Gmax = 2 S php so snh: Smax = N + 1 d. S php gn: Gmax = 2 Mn: Cu trc d liu v gii thut 10

S php so snh: Smax =2 N + 2 Cu 30. Cho cy nhi phn nh sau


34

55

50

40

NULL

NULL 90

NULL 13

NULL

NULL

NULL 11

NULL

22

NULL

NULL

169

20

NULL

NULL

Vi cach duyt Inorder (Left NULL Right) cho ra kt qua la day nao? Tim la chon ung nht Root NULL NULL NULL a. 13 2 55 40 169 11 20 34 50 90 22 b. 13 2 169 20 11 40 55 22 90 50 34 c. 34 55 2 13 40 11 169 20 50 90 22 d. Ca a, b, c u sai. Cu 31. Cu truc d liu cho kiu d liu sinh vin nh sau typedef struct tagSV{ char MSSV[8]; char Ten[30]; char NgaySinh[11]; float DTB; }SV; Khai bao SV sv1, *sv2; La chon cac cu ung nht gan gia tri cho ma sinh vin cua sv1 va sv2 a. sv1.MSSV = Nguyen Van A; sv2.MSSV = Nguyen Van B; b. sv1.MSSV = Nguyen Van A; sv2->MSSV = Nguyen Van B; c. sv1->MSSV = Nguyen Van A; sv2->MSSV = Nguyen Van B; d. sv1->MSSV = Nguyen Van A; sv2.MSSV = Nguyen Van B; Cu 32. Vi thu tuc nh sau void operation() { int x,a[10],n; int x,m,l,h,flag=0; cout<<"Enter the element to be searched:"; Mn: Cu trc d liu v gii thut 11

cin>>x; l=0; h=n-1; while(l<=h) { m=(l+h)/2; if(x==a[m]) { lag=1; break; } else if(x>a[m]) l=m+1; else if(x<a[m]) h=m-1; } if(flag==0) cout<<"ABSENT"; else cout<<"PRESENT"; } La chon cu ung nht m ta thu tuc trn a. Thu tuc tim nhi phn phn t c nhp t ban phim, nu tim thy se thng bao ABSENT b. Thu tuc tim nhi phn phn t c nhp t ban phim, nu khng tim thy se thng bao ABSENT c. Thu tuc tim tuyn tinh phn t c nhp t ban phim, nu tim thy se thng bao ABSENT d. Thu tuc tim tuyn tinh phn t c nhp t ban phim, nu khng tim thy se thng bao ABSENT Cu 33. Biu din v t chc ngn xp (Stack) bng danh sch lin kt gi s b mt ca ngn xp l u danh sch lin kt. typedef struct SElement { T Key; SElement *Next; } SOneElement; typedef struct SOneElement *SSTACK; SSTACK SSP; Thm 1 phn t vo ngn xp (dng cu truc d liu m ta trn) B1: NewElement = Khi tao nut mi (dung toan t new) B2: if (NewElement == NULL) Thc hin BKT B3: if (SSP == NULL) B3.1: SSP = NewElement B3.2: Thc hin BKT B4: B5: BKT: Kt thc Chon cu lnh chinh xac cho B4 va B5 a. B4: NewElement ->Next = SSP SSP = NewElement b. B4: SSP = NewElement ->Next B5: SSP = NewElement c. B4: SSP = NewElement ->Next B5: NewElement = SSP d. B4: NewElement ->Next = SSP B5: NewElement = SSP Cu 34. Cu trc d liu biu din hng i bng danh sch lin kt typedef struct QElement { T Key; QElement *Next; Mn: Cu trc d liu v gii thut 12

} QOneElement; typedef QElement *QType; Cu truc d liu quan ly hang i bng hai phn t u (Front) va cui (Rear): typedef struct QPElement { QType Font; QType Rear; } SQUEUE; SQUEUE SQList; Thm phn t vo sau phn t Rear. Gi s d liu a vo hng i l NewData, ma gia c m ta nh sau: B1: NewElement = Khi tao nut mi co thanh phn NewData B2: IF (NewElement == NULL) Thc hin BKT B3: IF (SQList.Front == NULL) // hng i dang rng B3.1: SQList.Front = SQList.Rear = NewElement B3.2: Thc hin BKT B4: .. B5: .. BKT: Kt thc Chon cu ung nht cho bc B4, B5 a. B4: SQList.Front->Next = NewElement B5: SQList.Front = NewElement b. B4: SQList.Rear->Next = NewElement B5: SQList.Rear = NewElement c. B4: NewElement = SQList.Rear->Next B5: SQList.Rear = NewElement d. B4: NewElement = SQList.Front->Next B5: SQList.Font = NewElement Cu 35. Chon inh nghia ung nht v hang i (Queue) a. Hng i cn c gi l danh sch FILO v cu trc d liu ny cn c gi cu trc FILO (First In Last Out) b. Hng i l mt danh sch m trong thao tc thm 1 phn t vo trong danh sch c thc hin 1 u ny v ly 1 phn t trong danh sch li thc hin bi u kia. c. Hng i l mt danh sch m trong thao tc thm 1 phn t hay huy mt phn t trong danh sch c thc hin 1 u. d. Hng i phi l mt danh sch lin kt n. Cu 36. Chiu dai ng i cua mt cy (paths length of the tree) c inh nghia l tng tt c cc chiu di ng i ca tt c cc nt trn cy. Xet cy sau:

a. Chiu di ng ca cy trn l 63 b. Chiu di ng ca cy trn l 64 c. Chiu di ng ca cy trn l 65 d. Chiu di ng ca cy trn l 66 Mn: Cu trc d liu v gii thut 13

Cu 37. Chon inh nghia ung nht i vi cy nhi phn tim kim a. Cy nh phn tm kim l cy nh phn c thnh phn kha ca mi nt ln hn thnh phn kha ca tt c cc nt trong cy con tri ca n v nh hn thnh phn kha ca tt c cc nt trong cy con phi ca n. b. Cy nh phn tm kim l cy nh phn c thnh phn kha ca mi nt nho hn thnh phn kha ca tt c cc nt trong cy con tri ca n v nh hn thnh phn kha ca tt c cc nt trong cy con phi ca n. c. Cy nh phn tm kim l cy nh phn c thnh phn kha ca mi nt ln hn thnh phn kha ca tt c cc nt trong cy con tri ca n v ln hn thnh phn kha ca tt c cc nt trong cy con phi ca n. d. Cy nh phn tm kim chnh l cy nh phn Cu 38. Chon inh nghia ung nht v cy cn bng tng i a. Cy cn bng tng i l mt cy nh phn tha mn iu kin l i vi mi nt ca cy th s nut ca cy con tri v s nut ca cy con phi ca nt hn km nhau khng qu 1. Cy cn bng tng i cn c gi l cy AVL (AVL tree). b. Cy cn bng tng i l mt cy N phn tha mn iu kin l i vi mi nt ca cy th chiu cao ca cy con tri v chiu cao ca cy con phi ca nt hn km nhau khng qu 2. Cy cn bng tng i cn c gi l cy AVL (AVL tree). c. Cy cn bng tng i l mt cy nh phn tha mn iu kin l i vi mi nt ca cy th chiu cao ca cy con tri v chiu cao ca cy con phi ca nt hn km nhau khng qu 1. Cy cn bng tng i cn c gi l cy AVL (AVL tree). d. Cy cn bng tng i cng l cy cn bng hon ton. Cu 39: nh ngha cu trc d liu ca danh sch lin kt n c m t nh sau: struct Node { int Key; Node * NextNode; } OneNode; Trong , khai bo Node * NextNode; dng m t a. Con tr tr ti phn d liu b. Vng lin kt qun l a ch phn t k tip c. Con tr tr ti phn d liu cui ca danh sch d. Vng lin kt qun l a ch phn t k tip ca phn t cui Cu 40. Khi cn thm mt phn t c gi tr thnh phn d liu l NewData (l mt s nguyn) vo u ca danh sch lin kt n dng thut ton c m gi m t nh di y. typedef struct Node { int Data; Node * NextNode; } OneNode; typedef OneNode * SLLPointer; SLLPointer SSList; B1: NewNode = new OneNode B2: IF (NewNode = NULL) Thc hin BKT B3: NewNode ->NextNode = NULL B4: NewNode ->Data = NewData B5: NewNode->NextNode = SLList B6: SLList = NewNode BKT: Kt thc Tm m t chnh xc cho B5 a. Chuyn vai tr ng u ca NewNode cho SLList b. Ni NewNode vo sau SLList c. Chuyn vai tr ng u ca SLList cho NewNode d. Ni SLList vo sau NewNode Mn: Cu trc d liu v gii thut 14

Cu 41: Tm kim xem trong danh sch lin kt n c tn ti nt c thnh phn d liu l SearchData hay khng. Thao tc ny chng ta vn dng thut ton tm tuyn tnh tm kim. typedef struct Node { int Data; Node * Link; } OneNode; typedef OneNode * Pointer; Pointer SSList; // Qun l danh sch lin kt n bi 1 phn t u B1: CurNode = SLList B2: IF () Thc hin BKT B3: CurNode = CurNode->Link B4: Lp li B2 BKT: Kt thc Chn iu kin hp l cho m gi B2 a. CurNode != NULL OR CurNode->Data = SearchData b. CurNode = NULL OR CurNode->Data != SearchData c. CurNode = NULL OR CurNode->Data = SearchData d. CurNode != NULL OR CurNode->Data != SearchData Cu 42: Cho cu trc d liu nh sau: typedef struct Node { int Key; Node *NextNode; } OneNode; typedef SLLOneNode * Type; Thut ton chn trc tip vit trn ngn ng C++ p dng cho danh sch lin kt n qun l bi mt phn t u tin c m t: void StraightSelection(Type &SList) { Type MinNode; int Temp; Type CurrNode,TempNode; CurrNode = SList; while (CurrNode!=NULL) { TempNode = CurrNode->NextNode; MinNode = CurrNode; while (TempNode!=NULL) { if () MinNode = TempNode; TempNode = TempNode->NextNode; } [1] Temp = MinNode->Key; [2] MinNode->Key = CurrNode->Key; [3] CurrNode->Key = Temp CurrNode=CurrNode->NextNode; } } Tm m t chnh xc cho [1], [2], [3] a. Hon v 2 mi lin kt Mn: Cu trc d liu v gii thut 15

b. Hon v 2 vng gi tr c. Hon v nt u v nt cui d. Hon v 2 nt k tip nhau Cu 43. Vi cu truc d liu nh sau typedef struct DNode { int Key; DNode * NextNode; DNode * PreNode; } DOneNode; typedef DLLOneNode * DPointerType; typedef struct DPairNode { DPointerType DLLFirst; DPointerType DLLLast; } DPType; Ham thm phn t vao cui danh sach lin kt i quan ly bi 2 phn t u va cui DPointerType DLLAddLast(DPType &DList, int NewData) { DPointerType NewNode = gi hm to nt mi c vng d liu l NewData; if (NewNode == NULL) return (NULL); if (DList.DLLLast == NULL) DList.DLLFirst = DList.DLLLast = NewNode; else { . . . } return (NewNode); } Hay la chon cu ung nht in vao ch trng trn a. DList.DLLLast ->NextNode = NewNode; NewNode ->PreNode = DList.DLLLast; NewNode = DList.DLLLast; b. DList.DLLLast ->NextNode = NewNode; DList.DLLLast = NewNode ->PreNode; DList.DLLLast = NewNode; c. NewNode = DList.DLLLast ->NextNode; NewNode ->PreNode = DList.DLLLast; DList.DLLLast = NewNode; d. DList.DLLLast ->NextNode = NewNode; NewNode ->PreNode = DList.DLLLast; DList.DLLLast = NewNode; Cu 44: Vi cu truc d liu nh sau typedef struct DNode { int Key; DNode * NextNode; DNode * PreNode; } DOneNode; typedef DOneNode * DPointerType; typedef struct DLLPairNode { DPointerType DLLFirst; Mn: Cu trc d liu v gii thut 16

DPointerType DLLLast; } DLLPType; Hm duyt qua cc nt trong danh sch lin kt i qun l bi hai a ch nt u tin v nt cui cng thng qua DList xem ni dung thnh phn d liu ca mi nt. void DLLTravelling (DLLPType DList) { DPointerType CurrNode = DList.DLLFirst; while (CurrNode != NULL) { cout << CurrNode->Key; } return; } Chon cu chinh xac in vao ch trng m ta vic di chuyn t nut nay sang nut khac a. CurrNode = CurrNode ->NextNode ; b. CurrNode = CurrNode ->Key ; c. CurrNode ->NextNode = CurrNode; d. CurrNode ->Key = CurrNode; Cu 45: Vi cu trc d liu m t cho Stack typedef struct SElement { int Key; SElement *Next; } SOneElement; typedef SOneElement *SSTACK; Tm m t chnh xc cho hm sau: void SSDelete (SSTACK &SList) { while (SList != NULL) { SSTACK TempElement = SList; SList = SList ->Next; TempElement ->Next = NULL; delete TempElement; } } a. Hy phn t u ca Stack b. Hy phn t cui ca Stack c. Hy phn t cui ca Stack v ly gi tr in ra mn hnh d. Hy ton b Stack

Mn: Cu trc d liu v gii thut

17

You might also like