You are on page 1of 11

BI TP THC HNH

MN : CU TRC D LIU V GII THUT (Ngn ng s dng: C++ trong b Visual Studio 2008)

Bi 1: Bng bm
A. Cho cu trc d liu cho bng bm m nh sau. Mi phn t ca bng bm m c kiu int v tp d liu c th c phn hoch ra ti a MAX=100 tp d liu con. const int MAX=100; typedef int TYPEINFO; struct NODE_LIST { TYPEINFO info; NODE_LIST* link; }; struct OpenHashTable { NODE_LIST* ds[MAX]; int n; }; Hm bm cho bng bm trn c xc nh nh sau: int funcHash(TYPEINFO a) { return a%n; } 1) Vit hm tm kim mt phn t trong bng bm. 2) Vit hm thm mt phn t vo bng bm. 3) Vit hm xa mt phn t khi bng bm. 4) Vit hm ghi bng bm ln file nh phn. 5) Vit hm c bng bm t file nh phn.

6) Vit chng trnh chnh c cc mc chn trn thanh menu nh sau: 0. Ket thuc 1. Them 2. Xoa 3. Tim kiem 4. Ghi file 5. Doc file Ban hay lua chon [0,1,2,3,4,5]: khi ta thc hin la chn mt mc chn trn thanh menu th chc nng tng ng ca mc chn s c thc hin. B. Sa li kiu d liu cho thng tin ca mi phn t trong bng bm m l kiu Sinh Vien; Sao cho: thng tin ca mt sinh vin bao gm: M s sinh vin (kiu chui), h tn (kiu chui), nm sinh (kiu s nguyn), gii tnh (kiu s nguyn), a ch tm tr (kiu chui), a ch thng tr (kiu chui). 1) Chn M s sinh vin l thnh phn d liu bm. Hy xc nh mt hm bm cho bng bm ny. 2) Vit cc hm v chng trnh chnh thc hin cc chc nng nh phn A.

Bi 2: th
(Quy c: cc nh ca th l cc s t nhin 0, 1, 2, 3, MAXV-1) Cho cc kiu d liu sau:

//MAXV: s nh ti a ca th const int MAXV=20; //MAXE: s cnh ti a ca th const int MAXE=MAXV*MAXV; //VERTEX: Kiu ca mt nh trong th typedef int VERTEX; //EDGE: Kiu ca mt cnh trong th struct EDGE { VERTEX org; //Origin VERTEX des; //Destination }; //ArrayVertex: danh sch nh ca th struct ArrayVertex { VERTEX ds[MAXV]; int count; }; //ArrayEdge: danh sch cnh ca th struct ArrayEdge { EDGE ds[MAXE]; int count; };

A. th (c hng v v hng) biu din bng ma trn k:


Quy c: th c xt trong bi tp ny l n th. Cho cc kiu d liu sau:

//Ma trn k ca th (Adjacency-matrix) struct AdjacencyMatrix { int mt[MAXV][MAXV]; int n; }; //Mng xc nh cc nh c ving thm. typedef VERTEX VISIT[MAXV]; //nh dng ca File vn bn cha ma trn k.
8 //Cha s nh ca th 01000000 00000000 01010100 00001000 00000000 00011000 01000000 10000010

Yu cu:
1) Vit hm c mt ma trn k t file vn bn. 2) Vit hm ghi mt ma trn k ln file vn bn. 3) Cho ma trn k ca th v hng. Vit hm tnh bc ca mt nh trong th . 4) Cho ma trn k ca th c hng. Vit hm tnh bc ra ca mt nh trong th . 5) Cho ma trn k ca th c hng. Vit hm tnh bc vo ca mt nh trong th . 6) Cho ma trn k ca th c hng. Vit hm tr v tp cnh ca th. 7) Cho ma trn k ca th v hng. Vit hm tr v tp cnh ca th. 8) Cho s nh v tp cnh ca th v hng. Vit hm tr v ma trn k ca th. 9) Cho s nh v tp cnh ca th c hng. Vit hm tr v ma trn k ca th. 10) th c hng G c xy dng t th c hng G bng cch i hng tt c cc cnh ca th G. Cho ma trn k ca th G, vit hm tr v ma trn k ca th G. 11) Cho ma trn k ca th. Vit hm duyt th theo chiu rng (BFS) vi nh xut pht v v xut ra mn hnh th t cc nh duyt c. 12) Cho ma trn k ca th. Vit hm duyt th theo chiu rng (BFS) v xut ra mn hnh th t cc nh duyt c.

13) Cho ma trn k ca th. Vit hm duyt th theo chiu rng (BFS) vi nh xut pht v. Th t cc nh ving thm cha vo tp nh av v th t cc cnh ving thm cha v tp cnh ae. 14) Cho ma trn k ca th. Vit hm duyt th theo chiu rng (BFS). Th t cc nh ving thm cha vo tp nh av v th t cc cnh ving thm cha v tp cnh ae. 15) Cho ma trn k ca th. Vit hm duyt th theo chiu su (DFS) vi nh xut pht v v xut ra mn hnh th t cc nh duyt c. 16) Cho ma trn k ca th. Vit hm duyt th theo chiu su (DFS) v xut ra mn hnh th t cc nh duyt c. 17) Cho ma trn k ca th. Vit hm duyt th theo chiu su (DFS) vi nh xut pht v. Th t cc nh ving thm cha vo tp nh av v th t cc cnh ving thm cha v tp cnh ae. 18) Cho ma trn k ca th. Vit hm duyt th theo chiu su (DFS). Th t cc nh ving thm cha vo tp nh av v th t cc cnh ving thm cha v tp cnh ae. 19) Cho ma trn k ca th v hng. Vit hm tr v mt s nguyn l s thnh phn lin thng ca th. 20) Cho ma trn k ca th c hng. Vit hm kim tra th c lin thng mnh hay khng. 21) Cho ma trn k ca th c hng. Vit hm tr v tp nh ca th c sp xp Topo.

B. th (c hng v v hng) biu din bng danh sch k:


//Danh sch k ca th (Adjacency-list) struct NodeVertex { int ver; //Vertex NodeVertex* link; }; typedef NodeVertex* NodeVertexPointer; struct AdjacencyList { NodeVertexPointer ds[MAXV]; int count; }; //nh dng ca File vn bn cha danh sch k.
* Dng u tin (i=1) l mt s nguyn xc nh s nh ca th. * T dng th hai tr i (i>=2) l mt dy s nguyn c xc nh nh sau:

* S u tin ca dng th i (i>=2) cha s cnh ni vi nh (i-2) v cc s nguyn tip theo ca dng ny l cc nh k vi nh (i-2). 5 // s nh ca th 2 1 3 // nh c ch s 0 c 2 cnh l (0,1) v (0,3) 204 13 3024 213

Yu cu:
Vit hm c mt danh sch k t file vn bn. Vit hm ghi mt danh sch k ln file vn bn. Vit hm gii phng vng nh c cp php ng cho danh sch k. Cho danh sch k ca th. Vit hm kim tra cp nh (u,v) c phi l mt cnh ca th hay khng. 5) Cho danh sch k ca th v hng. Vit hm tnh bc ca mt nh trong th . 6) Cho danh sch k ca th c hng. Vit hm tnh bc ra ca mt nh trong th . 7) Cho danh sch k ca th c hng. Vit hm tnh bc vo ca mt nh trong th . 8) Cho danh sch k ca th c hng. Vit hm tr v tp cnh ca th. 9) Cho danh sch k ca th v hng. Vit hm tr v tp cnh ca th. 10) Cho s nh v tp cnh ca th c hng. Vit hm tr v danh sch k ca th. 11) Cho s nh v tp cnh ca th v hng. Vit hm tr v danh sch k ca th. 12) th c hng G c xy dng t th c hng G bng cch i hng tt c cc cnh ca th G. Cho danh sch k ca th G, vit hm tr v danh sch k ca th G. 13) Cho danh sch k ca th. Vit hm duyt th theo chiu rng (BFS) vi nh xut pht v v xut ra mn hnh th t cc nh duyt c. 14) Cho danh sch k ca th. Vit hm duyt th theo chiu rng (BFS) v xut ra mn hnh th t cc nh duyt c. 15) Cho danh sch k ca th. Vit hm duyt th theo chiu rng (BFS) vi nh xut pht v. Th t cc nh ving thm cha vo tp nh av v th t cc cnh ving thm cha v tp cnh ae. 1) 2) 3) 4)

16) Cho danh sch k ca th. Vit hm duyt th theo chiu rng (BFS). Th t cc nh ving thm cha vo tp nh av v th t cc cnh ving thm cha v tp cnh ae. 17) Cho danh sch k ca th. Vit hm duyt th theo chiu su (DFS) vi nh xut pht v v xut ra mn hnh th t cc nh duyt c. 18) Cho danh sch k ca th. Vit hm duyt th theo chiu su (DFS) v xut ra mn hnh th t cc nh duyt c. 19) Cho danh sch k ca th. Vit hm duyt th theo chiu su (DFS) vi nh xut pht v. Th t cc nh ving thm cha vo tp nh av v th t cc cnh ving thm cha v tp cnh ae. 20) Cho danh sch k ca th. Vit hm duyt th theo chiu su (DFS). Th t cc nh ving thm cha vo tp nh av v th t cc cnh ving thm cha v tp cnh ae. 21) Cho danh sch k ca th v hng. Vit hm tr v mt s nguyn l s thnh phn lin thng ca th. 22) Cho danh sch k ca th c hng. Vit hm kim tra th c lin thng mnh hay khng. 23) Cho danh sch k ca th c hng. Vit hm tr v tp nh ca th c sp xp Topo.

C. th trng s (c hng v v hng) v cy biu din bng ma trn k:


* nh ngha cy: Cy l mt th v hng, lin thng v khng c chu trnh. * Mc ca nh a: l di ng i t nh gc n nh a. 1) Cho th trng s biu din bng ma trn k. Vit hm tm mt nh k vi nh u m c trng s nh nht. 2) Cho tp cnh ca th trng s. Vit hm sp xp cc cnh theo th t gim dn ca trng s. 3) Cho ma trn k ca th v hng. Vit hm kim tra th c phi l 1 cy hay khng. 4) Cho th trng s biu din bng ma trn k. Dng gii thut Dijkstra, vit hm tm ng i ngn nht t nh u n cc nh cn li. Hm tr v mng mt chiu cha di ng i ngn nht t nh u v mng mt chiu lu li vt ca tt c ng i ngn nht t nh u.

5) Cho mng mt chiu lu vt ca tt c cc ng i ngn nht t nh u trong gii thut Dijkstra. Hy vit hm tr v danh sch nh l ng i ngn nht t nh u n nh v. 6) Cho ma trn k ca mt cy. Vit hm tm ng i t nh u n nh v ca cy. 7) Cho ma trn k ca mt cy v u l nh gc. Vit hm tr v mc ca nh v. 8) Cho ma trn k ca mt cy v u l nh gc. Vit hm tm tt c cc nh t tin ca nh v. 9) Cho ma trn k ca mt cy v u l nh gc. Vit hm tm nh cha ca nh v. 10) Cho ma trn k ca mt cy v u l nh gc. Vit hm tm tt c cc nh con ca nh v. 11) Cho ma trn k ca mt cy v u l nh gc. Vit hm tm tt c cc nh con chu ca nh v. 12) Cho th trng s biu din bng ma trn k. Dng gii thut Floyd, vit hm tm ng i ngn nht gia mi cp nh ca th. Hm tr v ma trn cha di ng i ngn nht ca mi cp nh v ma trn cha vt ca ng ngn nht ca mi cp nh. 13) Cho ma trn cha vt ca ng i ngn nht gia mi cp nh trong gii thut Floyd. Vit hm tr v danh sch nh l ng i ngn nht gia hai nh u v v. 14) Cho th trng s biu din bng ma trn k. Dng gii thut Prim, vit hm tr v tp cnh l cy bao trm ngn nht ca th. 15) Cho th trng s biu din bng ma trn k. Dng gii thut Kruskal, vit hm tr v tp cnh l cy bao trm ngn nht ca th.

Bi 3: Cy BST v AVL
A. Cy nh phn v cy tm kim nh phn (BST):
Cho cu trc d liu ca cy nh phn v cy tm kim nh phn nh sau; Sao cho mi nt trn cy cha thng tin kiu int. typedef int TYPEINFO; struct NODE { TYPEINFO info; NODE* left; NODE* right; }; typedef NODE* NODEPTR; 1) Vit hm duyt cy nh phn theo th t PreOrder (NLR: Node-LeftRight). Kt qu duyt xut ra mn hnh. void PreOrder(NODEPTR r); 2) Vit hm duyt cy nh phn theo th t InOrder (LNR: Left-NodeRight). Kt qu duyt xut ra mn hnh. void InOrder(NODEPTR r); 3) Vit hm duyt cy nh phn theo th t PostOrder (LRN: Left-RightNode). Kt qu duyt xut ra mn hnh. void PostOrder(NODEPTR r); 4) Vit hm khi to cy tm kim nh phn. void InitBST(NODEPTR& r); 5) Vit hm gii phng vng nh dnh cho cy tm kim nh phn. void Remove(NODEPTR& r); 6) Vit hm to mt nt cho cy tm kim nh phn. void InitNodeBST(NODEPTR& r); 7) Vit hm tm phn t cha thng tin a trong cy tm kim nh phn r. Nu tm thy hm tr v a ch ca nt tm c, ngc li hm tr v gi tr NULL. NODEPTR Find(NODEPTR& r,TYPEINFO a); 8) Vit hm thm mt phn t cha thng tin a vo cy tm kim nh phn r. Nu thm c hm tr v a ch ca nt mi thm vo, ngc li hm tr v gi tr NULL. NODEPTR Insert(NODEPTR& r,TYPEINFO a);

9) Vit hm xa mt nt cha thng tin a khi cy tm kim nh phn r. Nu xa c hm tr v gi tr 1, ngc li hm tr v gi tr 0. int Remove(NODEPTR& r,TYPEINFO a); 10) Vit hm ghi d liu trong cy nh phn tm kim r ln file nh phn c tn filename. Hm tr v gi tr 1 nu ghi thnh cng, ngc li hm tr v gi tr 0. int Write(NODEPTR r,char* filename); 11) Vit hm c d liu t file nh phn c tn filename v cha vo cy nh phn tm kim r. Hm tr v gi tr 1 nu c thnh cng, ngc li hm tr v gi tr 0. int Read(NODEPTR& r,char* filename); 12) Vit chng trnh chnh c thanh menu vi cc mc chn nh sau: 1. Ket thuc 2. Them BST 3. Xoa BST 4. Tim BST 5. Duyet PreOder 6. Duyet InOrder 7. Duyet PostOrder 8. Ghi file cay BST 9. Doc file cay BST Ban hay lua chon [0,1,2,3,4,5,6,7,8]: Khi ta la chn mt mc chn trn thanh menu th chng trnh thc hin chc nng tng ng vi mc chn .

B. Cy AVL:
Cho cu trc d liu ca AVL nh sau; Sao cho mi nt trn cy cha thng tin kiu int. Thnh phn d liu height l s nguyn lu tr chiu cao ca nt tng ng trong cy AVL. typedef int TYPEINFO; struct NODE { TYPEINFO info; NODE* left; NODE* right; int height; };

typedef NODE* NODEPTR; 1) Vit hm tr v mt s nguyn l chiu cao ca cy AVL r. int Height(NODEPTR r) 2) Vit hm quay tri cy AVL r. void RotateLeft(NODEPTR& r) 3) Vit hm quay phi cy AVL r. void RotateRight(NODEPTR& r) 4) Vit hm quay phi cy AVL r->right, v quay tri cy AVL r. void RotateRightLeft(NODEPTR& r) 5) Vit hm quay tri cy AVL r->left, v quay phi cy AVL r. void RotateLeftRight(NODEPTR& r) 6) Vit hm thm mt phn t cha thng tin a vo cy AVL r. Nu thm c hm tr v a ch ca nt va thm, ngc li hm tr v gi tr NULL. NODEPTR Insert(NODEPTR& r,TYPEINFO a); 7) Vit hm xa mt nt cha thng tin a trong cy AVL r. Nu xa c hm tr v gi tr 1, ngc li hm tr v gi tr 0. int Remove(NODEPTR& r,TYPEINFO a); 8) Vit chng trnh chnh c thanh menu vi cc mc chn nh sau: 0. Ket thuc 1. Them AVL 2. Xoa AVL 3. Tim AVL 4. Duyet PreOder 5. Duyet InOrder 6. Duyet PostOrder 7. Ghi file cay AVL 8. Doc file cay AVL Ban hay lua chon [0,1,2,3,4,5,6,7,8]: Khi ta la chn mt mc chn trn thanh menu th chng trnh thc hin chc nng tng ng vi mc chn .

You might also like