当前位置:文档之家› 《数据结构》习题汇编07 第七章 图 试题

《数据结构》习题汇编07 第七章 图 试题

《数据结构》习题汇编07 第七章 图 试题
《数据结构》习题汇编07 第七章 图 试题

第七章图试题

一、单项选择题

1.在无向图中定义顶点的度为与它相关联的()的数目。

A. 顶点

B. 边

C. 权

D. 权值

2.在无向图中定义顶点 v i与v j之间的路径为从v i到达v j的一个()。

A. 顶点序列

B. 边序列

C. 权值总和

D. 边的条数

3.图的简单路径是指()不重复的路径。

A. 权值

B. 顶点

C. 边

D. 边与顶点均

4.设无向图的顶点个数为n,则该图最多有()条边。

A. n-1

B. n(n-1)/2

C. n(n+1)/2

D. n(n-1)

5.n个顶点的连通图至少有()条边。

A. n-1

B. n

C. n+1

D. 0

6.在一个无向图中,所有顶点的度数之和等于所有边数的 ( ) 倍。

A. 3

B. 2

C. 1

D. 1/2

7.若采用邻接矩阵法存储一个n个顶点的无向图,则该邻接矩阵是一个 ( )。

A. 上三角矩阵

B. 稀疏矩阵

C. 对角矩阵

D. 对称矩阵

8.图的深度优先搜索类似于树的()次序遍历。

A. 先根

B. 中根

C. 后根

D. 层次

9.图的广度优先搜索类似于树的()次序遍历。

A. 先根

B. 中根

C. 后根

D. 层次

10.在用Kruskal算法求解带权连通图的最小(代价)生成树时,通常采用一个()辅助结构,

判断一条边的两个端点是否在同一个连通分量上。

A. 位向量

B. 堆

C. 并查集

D. 生成树顶点集合

11.在用Kruskal算法求解带权连通图的最小(代价)生成树时,选择权值最小的边的原则是该边不能

在图中构成()。

A. 重边

B. 有向环

C. 回路

D. 权值重复的边

12.在用Dijkstra算法求解带权有向图的最短路径问题时,要求图中每条边所带的权值必须是

()。

A. 非零

B. 非整

C. 非负

D. 非正

13.在一个连通图中进行深度优先搜索得到一棵深度优先生成树,树根结点是关节点的充要条件是它至少

有()子女。

A. 1

B. 2

C. 3

D. 0

14.设有向图有n个顶点和e条边,采用邻接表作为其存储表示,在进行拓扑排序时,总的计算时间为

()。

A. O(nlog2e)

B. O(n+e)

C. O(ne)

D. O(n2)

15.设有向图有n个顶点和e条边,采用邻接矩阵作为其存储表示,在进行拓扑排序时,总的计算时间为

()。

A. O(nlog2e)

B. O(n+e)

C. O(ne)

D. O(n2)

16.设G1 = (V1, E1) 和G2 = (V2, E2) 为两个图,如果V1 ? V2,E1 ? E2,则称()。

A. G1是G2的子图

B. G2是G1的子图

C. G1是G2的连通分量

D. G2是G1的连通分量

17.有向图的一个顶点的度为该顶点的()。

A. 入度

B. 出度

C. 入度与出度之和

D. (入度﹢出度))/2

18.一个连通图的生成树是包含图中所有顶点的一个()子图。

A. 极小

B. 连通

C. 极小连通

D. 无环

19.n (n>1) 个顶点的强连通图中至少含有()条有向边。

A. n-1

B. n n(n-1)/2 D. n(n-1)

20.在一个带权连通图G中,权值最小的边一定包含在G的()生成树中。

A. 某个最小

B. 任何最小

C. 广度优先

D.深度优先

21.对于具有e条边的无向图,它的邻接表中有()个边结点。

A. e-1

B. e

C. 2(e-1)

D. 2e

22.对于如图所示的带权有向图,从顶点1到顶点5的最短路径为()。

A.1, 4, 5

B. 1, 2, 3, 5

C. 1, 4, 3, 5

D. 1, 2, 4, 3, 5

23.具有n个顶点的有向无环图最多可包含()条有向边。

A. n-1

B. n

C. n(n-1)/2

D.n(n-1)

24.一个有n个顶点和n条边的无向图一定是()。

A. 连通的

B. 不连通的

C. 无环的

D. 有环的

25.在n个顶点的有向无环图的邻接矩阵中至少有()个零元素。

A. n

B. n(n-1)/2

C. n(n+1)/2

D. n(n-1)

26.对于有向图,其邻接矩阵表示比邻接表表示更易于()。

A. 求一个顶点的度

B. 求一个顶点的邻接点

C. 进行图的深度优先遍历

D. 进行图的广度优先遍历

27.在一个有向图的邻接矩阵表示中,删除一条边需要耗费的时间是()。

A. O(1)

B. O(i)

C. O(j)

D. O(i+j)

28.与邻接矩阵相比,邻接表更适合于存储()图。

A. 无向

B.连通

C.稀疏

D. 稠密图

29.设一个有n个顶点和e条边的有向图采用邻接矩阵表示,要计算某个顶点的出度所耗费的时间是

()。

A. O(n)

B. O(e)

C. O(n+e)

D. O(n2)

30.为了实现图的广度优先遍历,BFS算法使用的一个辅助数据结构是()。

A. 栈

B. 队列

C. 二叉树

D. 树

参考答案: 1. B 2. A 3. B 4. B 5. A

6. B

7. D

8. A

9. D 10. C

11.C 12. C 13. B 14. B 15. D

16. A 17. C 18. C 19. B 20. A

21. D 22. D 23. C 24. D 25. C

26. A 27. A 28. C 29. A 30. B

二、填空题

1.图的定义包含一个顶点集合和一个边集合。其中,顶点集合是一个有穷________集合。

2.用邻接矩阵存储图,占用存储空间数与图中顶点个数________关,与边数________关。

3.n (n﹥0) 个顶点的无向图最多有________条边,最少有________条边。

4.n (n﹥0) 个顶点的连通无向图最少有________条边。

5.若3个顶点的图G的邻接矩阵为

?

?

?

?

?

?

?

?

?

?

1

1

1

,则图G一定是________向图。

6.n (n﹥0) 个顶点的连通无向图各顶点的度之和最少为________。

7.设图G = (V, E),V = {V0, V1, V2, V3}, E = {(V0, V1), (V0, V2), (V0, V3), (V1,

V3)},则从顶点V0开始的图G的不同深度优先序列有________种,例如______________。

8.设图G = (V, E),V = {P, Q, R, S, T}, E = {, , , },

从顶点P出发,对图G进行广度优先搜索所得的所有序列为__________和___________。

9.n (n﹥0) 个顶点的无向图中顶点的度的最大值为________。

10.在重连通图中每个顶点的度至少为________。

11.在非重连通图中进行深度优先搜索,则深度优先生成树的根为关节点的充要条件是它至少有

________个子女。

12.(n﹥0) 个顶点的连通无向图的生成树至少有________条边。

13.101个顶点的连通网络N有100条边,其中权值为1, 2, 3, 4, 5, 6, 7, 8, 9, 10的边各

10条,则网络N的最小生成树各边的权值之和为_________。

14.在使用Kruskal算法构造连通网络的最小生成树时,只有当一条候选边的两个端点不在同一个

________上,才有可能加入到生成树中。

15.深度优先生成树的高度比广度优先生成树的高度________。

16.求解带权连通图最小生成树的Prim算法适合于________图的情形,而Kruskal算法适合于

________图的情形。

17.求解最短路径的Dijkstra算法适用于各边上的权值________的情形。若设图的顶点数为n,则该

算法的时间复杂度为________。

18.若对一个有向无环图进行拓扑排序,再对排在拓扑有序序列中的所有顶点按其先后次序重新编号,则

在相应的邻接矩阵中所有________元素将集中到对角线以上。

参考答案: 1. 非空 2. 有, 无 3. n(n-1)/2, 0

4. n-1

5. 有

6. 2(n-1)

7. 4,V0V1V3V2(或V0V2V1V3, V0V2V3V1, V0V3V1V2)

8. PQRST和PRQTS 9. n-1 10. 2

11. 2 12. n-1 13. 550

14. 连通分量15. 高16. 稠密,稀疏

17. 非负,O(n2) 18. 非零(或值为1的)

三、判断题

1.一个图的子图可以是空图,顶点个数为0。

2.存储图的邻接矩阵中,矩阵元素个数不但与图的顶点个数有关,而且与图的边数也有关。

3.一个有1000个顶点和1000条边的有向图的邻接矩阵是一个稀疏矩阵。

4.对一个连通图进行一次深度优先搜索(depth first search)可以遍访图中的所有顶点。

5.有n (n≥1) 个顶点的无向连通图最少有n-1条边。

6.有n (n≥1) 个顶点的有向强连通图最少有n条边。

7.图中各个顶点的编号是人为的,不是它本身固有的,因此可以因为某种需要改变顶点的编号。

8.如果无向图中各个顶点的度都大于2,则该图中必有回路。

9.如果有向图中各个顶点的度都大于2,则该图中必有回路。

10.图的深度优先搜索(depth first search)是一种典型的回溯搜索的例子,可以通过递归算法求

解。

11.图的广度优先搜索(breadth first search)算法不是递归算法。

12.有n个顶点、e条边的带权有向图的最小生成树一般由n个顶点和n-1条边组成。

13.对于一个边上权值任意的带权有向图,使用Dijkstra算法可以求一个顶点到其它各个顶点的最短路

径。

14.对一个有向图进行拓扑排序(topological sorting),一定可以将图的所有顶点按其关键码大小

排列到一个拓扑有序的序列中。

15.有回路的有向图不能完成拓扑排序。

16.对任何用顶点表示活动的网络(AOV网)进行拓扑排序的结果都是唯一的。

17.用边表示活动的网络(AOE网)的关键路径是指从源点到终点的路径长度最长的路径。

18.对于AOE网络,加速任一关键活动就能使整个工程提前完成。

19.对于AOE网络,任一关键活动延迟将导致整个工程延迟完成。

20.在AOE网络中,可能同时存在几条关键路径,称所有关键路径都需通过的有向边为桥。如果加速这样

的桥上的关键活动就能使整个工程提前完成。

21.用邻接矩阵存储一个图时,在不考虑压缩存储的情况下,所占用的存储空间大小只与图中的顶点个数

有关,而与图的边数无关。

22.邻接表只能用于有向图的存储,邻接矩阵对于有向图和无向图的存储都适用。

23.邻接矩阵只适用于稠密图(边数接近于顶点数的平方),邻接表适用于稀疏图(边数远小于顶点数的平

方)

24.存储无向图的邻接矩阵是对称的,因此只要存储邻接矩阵的下(上)三角部分就可以了。

25. 连通分量是无向图中的极小连通子图。

26. 强连通分量是有向图中的极大强连通子图。

27. 在AOE 网络中一定只有一条关键路径。

参考答案: 1. 否

2. 否

3. 是

4. 是

5. 是

6. 否

7. 是

8. 是

9. 否 10. 是 11. 是 12. 否 13. 否 14. 否 15. 是 16. 否 17. 是 18. 否 19. 是 20. 是 21. 是 22. 否 23. 是 24. 是

25. 否

26. 是

27. 否

四、运算题

1. 设连通图G 如图所示。试画出该图对应的邻接矩阵表示,并给出对它执行从顶点V0开始的广度优先

搜索的结果。

2. 设连通图G 如图所示。试画出该图及其对应的邻接表表示,并给出对它执行从V0开始的深度优先搜

索的结果。

3. 设连通图G 如图所示。试画出从顶点V0出发的深度优先生成树,指出图G 中哪几个顶点是关节点(即

万一它失效则通信网络将发生故障)。

4. 设连通图G 如图所示,

(1) 如果有关节点,请找出所有的关节点。 (2) 如果想把该连通图变成重连通图,至少在图中加几条边?如何加?

V 4 6

V 4 6

V 4

6⑩ ① ② ③ ④ ⑤ ⑥ ⑦

1

n 0k kj

ik ij b a c -==

5. 对于如图所示的有向图,试写出:

(1) 从顶点①出发进行深度优先搜索所得到的深度优先生成树; (2) 从顶点②出发进行广度优先搜索所得到的广度优先生成树

6. 设有向图G 如图所示。试画出从顶点V0开始进行深度优先搜索和广度优先搜索得到的DFS 生成森林

和BFS 生成森林。

7. 表示图的另一种方法是使用关联矩阵INC[ ][ ]。其中,一行对应于一个顶点,一列对应于一条边。

因此,如果边j 依附于顶点i ,则INC[i][j]=1。如果ADJ 是图G =(V, E )的邻接矩阵,INC 是关联矩阵,试说明在什么条件下将有ADJ = INC ?INCT -I ,其中,INCT 是矩阵INC 的转置矩阵,I 是单位矩阵。两个n ?n 的矩阵的乘积C = A ?B 定义为

公式中的 定义为按位加,

定义为按位乘。 设无向图G 如图所示。试画出该图的邻接矩阵和关联矩阵。

8. 设有一个连通网络如图所示。试按如下格式,应用Kruskal 算法给出在构造最小生成树过程中顺序选出的各条边。

1 V 7

65

② ③ ④ ⑤

( 始顶点号,终顶点号, 权值 ) ( , , ) ( , , ) ( , , ) ( , , ) ( , , )

9. 设有一个连通网络如图所示。试采用prim 算法从顶点0开始构造最小生成树。(写出加入生成树顶点

集合S 和选择边Edge 的顺序)

10. 计算连通网的最小生成树的Dijkstra 算法可简述如下:将连通网所有的边以方便的次序逐条加入到

初始为空的生成树的边集合T 中。每次选择并加入一条边时,需要判断它是否会与先前加入T

中的边构成回路。如果构成了回路,则从这个回路中将权值最大的边退选。如果以邻接矩阵作为连通网的存储结构(仅使用矩阵的上三角部分),并在邻接矩阵的下三角部分记录最小生成树的边信息。试以如下所示的图G 为例,画出构造出最小生成树及其邻接矩阵,并在括号内填入每次选择的边和可能去掉的边。

选 择 的 边

去 掉 的 边 (顶点, 顶点,

权值)

(顶点, 顶

点,

权值) ( , , ) ( , , ) ( , , ) ( , , ) ( , , )

( , , )

26 21

11 ① ② ⑤ ④ ③ ⑥ 18 14 16 19

9 5 6 ???

??????

?

??------------∞∞--∞-∞∞=02601118060199502114160Edge

( , , )( , , )

( , , )( , , )

( , , )( , , )

( , , )( , , )

( , , )( , , )

( , , )( , , )

( , , )( , , )

11.有八项活动, 每项活动要求的前驱如下:

(1) 试画出相应的AOV网络, 并给出一个拓扑排序序列。

(2) 试改变某些结点的编号, 使得用邻接矩阵表示该网络时所有对角线以下的元素全为0。

12.试对下图所示的AOE网络

(1) 这个工程最早可能在什么时间结束。

(2) 确定哪些活动是关键活动。画出由所有关键活动构成的图,指出哪些活动加速可使整个工程提前完成。

13.设带权有向图如图所示。试采用Dijkstra算法求从顶点0到其他各顶点的最短路径和最短路径长度。

14.一项工程由六个子工程p1, p2, , p6组成。这些子工程之间有下列关系:p1 < p2, p3 < p6,

p4 < p3, p2 < p6, p4 < p5, p1 < p3, p5 < p6。符号“<”表示“领先于”的关系。例如,p2 < p6表示p2完成后p6才能开始。试给出该工程的三种可能的施工顺序。

15.设一有向图如下所示,请问该有向图是否为强连通图,并画出该有向图所有的强连通分量。

参考答案:

1. 图G 对应的邻接矩阵为

???

?

??

?

??

?

?????????????????

?=001000000001001000110001000000000100000000010

011000111

000101001000011001000001110G.Edge

执行广度优先搜索的结果为V0V1V3V2V4V7V6V5V8,搜索结果不唯一。

2. 图G 对应的邻接表为:

执行深度优先搜索的结果为:V0V1V4V3V6V7V8V2V5,搜索结果不唯一。

3. 图G 中,从V0出发的深度优先生成树为:

图G 中的关节点为:V1, V2, V3, V6。

4. (1) 关节点为 ①, ②, ③, ⑦, ⑧

(2) 至少加四条边 (1, 10), (3, 4), (4, 5), (5, 6)。从 ③ 的子孙结点⑩到③的祖先结点①引一条边,从 ② 的子孙结点 ④ 到根 ① 的另一分支 ③ 引一条边,并将 ⑦ 的子孙结点 ⑤、⑥ 与结点 ④ 连结起来,可使其变为重连通图。(解答不唯一)

V 4

6

5. 以顶点 ① 为根的深度优先生成树(不唯一):

以顶点 ② 为根的广度优先生成树:

6. 深度优先生成森林为:

广度优先生成森林为:

7. 当图中的顶点个数等于边的条数时,ADJ = INC*INCT-I 成立。

图G 对应的邻接矩阵为:

7

6543

21001111000

10000100100001001000001010000010

0110000100011001000001107

6543210ADJ ??

?

??

?

??

?

???

??????????????=

1

V 23

V 7 V 6 5

1 V 23

V 7

V 6 5①

② ③ ④ ⑤

对应的关联矩阵为:

8.应用Kruskal算法顺序选出最小生成树的各条边为:

( 始顶点号,终顶点号,权值 )

( 0, 3, 1 )

( 2, 5, 2 )

( 1, 4, 3 )

( 3, 5, 4 )

( 3, 4, 5 )

9.采用prim算法从顶点0开始构造最小生成树的过程:

10.最小生成树及其邻接矩阵如图所示

选择的边去掉的边

(顶点, 顶

点, 权值)

(顶点, 顶

点,

权值)

7

6

5

4

3

2

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

9

8

7

6

5

4

3

2

1

INC

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

=

?

?

?

?

?

?

?

?

?

?

?

?

-

-

-

-

-

-

-

-

-

-

=

26

11

18

6

19

9

5

21

14

16

Edge

11

14

6

5

16

①②

14

16

5

6

11

( 2 ,

1 ,

16 ) ( , , ) ( 5 ,

1 ,

14 ) ( , , ) ( 6 ,

1 ,

21 ) ( , , ) ( 6 ,

2 ,

19 ) ( 6 , 1 , 21 ) ( 6 ,

4 ,

11 ) ( , , ) ( 6 ,

5 ,

26 ) ( 6 , 5 , 26 ) ( 5 ,

4 ,

18 ) ( 6 , 2 , 19 ) ( 4 ,

2 ,

9 ) ( 5 , 4 , 18 ) ( 3 ,

2 ,

5 ) ( , , ) ( 4 ,

3 ,

6 ) ( 4 , 2 , 9 )

选择顺序不唯一。

11. 相应的AOV 网络为:

一个拓扑排序序列为:A0,A1,A4,A2,A5,A3,A6,A7。 注意:拓扑排序结果不唯一。 按拓扑有序的次序对所有顶点从新编号:

相应邻接矩阵为:

A7

A7

7

6543

2100000000010000000010000001000000000110000

0001000000000100001010107

6543210??

?

??

?

??

?

???

?????????

?????=Edge

12. 针对下图所示的AOE 网络

各顶点(事件)的最早可能开始时间Ve(i)和最迟允许开始时间Vl(i)参看下表: 顶点 1 2 3 4 5 6 Ve 0 19 15 29 38 43 Vl

0 19 15 37 38 43

各边(活动)的最早可能开始时间Ee(k)和最迟允许开始时间El(k)参看下表: 边 <1,2> <1,3> <3,2> <2,5> <3,5> <2,4> <4,6> <5,6> Ee 0 0 15 19 15 19 29 38 El 17 0 15 19 27 27 37 38

如果活动k 的最早可能开始时间Ee(k) 与最迟允许开始时间El(k)相等,则该活动是关键活动。本题的关键活动为<1,3>, <3,2>, <2,5>, <5,6>,它们组成关键路径。这些关键活动中任一个提前完成,整个工程就能提前完成。

整个工程最早在43天完成。由关键活动组成的AOV 网络如图所示。

13. 带权有向图如图所示:

应用Dijkstra 算法求从顶点V0到其他各顶点的最短路径Path 和最短路径长度Len 的步骤如下:

14. 图G 为 可能的施工顺序有:

p1, p2, p4, p3, p5, p6 p1, p4, p2, p3, p5, p6 p4, p5, p1, p3, p2, p6

15. 该图的强连通分量分别为:

五、算法分析题

1. 已知有向图的邻接矩阵表示及其一个算法描述如下:

p2

p6

const int MaxVertices = 5;

struct Graph { //图的邻接矩阵表示

int Edge[MaxVertices][MaxVertices]; //有向图邻接距阵

int CurrentNode; //有向图当前结点数

int CurrentEdges; //当前边数

}

int unknown ( int i ) {

int d = 0;

for ( int j = 0; j < CurrentNode; j++) {

if ( Edge[i][j] != 0 ) d++;

if ( Edge[j][i] != 0 ) d++;

}

return d;

}

(1)若定义图的一个对象Graph G,则执行操作G.unknown (3) 后的返回值是多少?

(2)试说明该算法的功能及时间复杂度。

2.已知有向图的邻接矩阵表示及其一个操作算法描述如下:

const int MaxVertices = 5;

struct Graph { //图的邻接矩阵表示

int Edge[MaxVertices][MaxVertices]; //有向图邻接距阵

int CurrentNode; //有向图当前结点数

int CurrentEdges; //当前边数

}

void unknown ( int i ) {

int d, j;

d = 0;

for ( j = 0; j < CurrentNode; j++ ) {

if ( Edge[i][j] ) { d++; Edge[i][j] = 0; }

if ( Edge[j][i] ) { d++; Edge[j][i] = 0; }

}

CurrentEdges -= d;

}

若定义图的一个对象Graph G,试写出执行操作G.unknown (3) 后该图的邻接矩阵,并说明该算法的功能。

3.已知有向图的邻接表类的表示的形式描述如下:

struct Edge { //邻接表中边结点的定义

int dest; //邻接的结点

float cost; //边的权值

Edge * link;

};

template struct Vertex { //邻接表中顶点的定义Type data;

Edge *adj;

};

template struct Graph { //邻接表

Vertex * NodeTable; //顶点表

int NumVertices; //当前顶点个数

int NumEdges; //当前边数

int Degree[MaxVertices]; //各个顶点的度的记录数组}

//下列算法是计算有向图中各个顶点的度,并保存在数组Degree[ ]中。请在处//填入合适的内容,使其成为一个完整的算法。

void FindDegree ( ) {

int i; Edge * p = NULL;

for ( i = 0; i < NumVertices; i++ ) Degree[i] = (1) ;

for ( i = 0; i < NumVertices; i++)

for ( p = NodeTable[i].adj; p != NULL; p = p->link ) {

(2) ;

(3) ;

}

};

4.已知有向图的邻接表类的表示的形式描述如下:

struct Edge { //邻接表中边结点的定义

int dest; //邻接的结点

float cost; //边的权值

Edge * link;

};

template struct Vertex { //邻接表中顶点的定义Type data;

Edge *adj;

};

template struct Graph { //邻接表

Vertex * NodeTable; //顶点表

int NumVertices; //当前顶点个数

int NumEdges; //当前边数

int Degree[MaxVertices]; //各个顶点的度的记录数组}

//下列算法是计算有向图G中一个顶点vi的入度。请在处填入合适的内容,//使其成为一个完整的算法。

void FindDegree ( int i ) {

int deg, j; Edge * p = NULL;

deg = 0;

for ( j = 0; j < NumVertices; j++ ) {

p = NodeTable[j].adj;

while ( (1) ) {

p = p->link;

if ( p == NULL ) break;

}

if ( p != NULL ) (2) ;

}

return deg;

}

5.已知有向图的邻接表类的表示的形式描述如下:

struct Edge { //邻接表中边结点的定义

int dest; //邻接的结点

float cost; //边的权值

Edge * link;

};

template struct Vertex { //邻接表中顶点的定义Type data;

Edge *adj;

};

template struct Graph { //邻接表

Vertex * NodeTable; //顶点表

int NumVertices; //当前顶点个数

int NumEdges; //当前边数

int Degree[MaxVertices]; //各个顶点的度的记录数组}

//下列算法是从有向图G中删除所有以vi为弧头的有向边。请在处填入合适//的内容,使其成为一个完整的算法。

void DeletEdge ( int i ) {

int de = 0, j; Edge *p, *q;

if ( i >= NumVertices )

{ cout << "错误输入" << endl; exit (1); }

for ( j = 0; j < NumVertices; j++ ) {

p = NodeTable[j].adj;

while ( (1) )

{ q = p; p = p->link; }

if ( p != NULL ) {

if ( p != NodeTable[j].adj ) q->link = p->link;

else (2) ;

delete p;

de++;

}

}

NumEdges = NumEdges - de;

}

6.已知带权图的邻接矩阵表示和邻接表类表示的形式描述分别如下:

(1)邻接矩阵的定义

#define INFINITY INT_MAX //INT_MAX为最大整数,表示∞const int MaxVertices = 20;

template struct AdjMatrix {

Type * NodeTable; //顶点表定义

float arr[Maxvertices][MaxVertices]; //邻接矩阵定义

int NumVertices; //当前顶点个数

int NumEdges; //当前边数

};

(2) 邻接表定义

struct Edge { //邻接表中边结点的定义int dest; //邻接的结点

float cost; //边的权值

Edge * link;

};

template struct Vertex { //邻接表中顶点的定义Type data;

Edge *adj;

};

template struct AdjTable { //邻接表

Vertex * NodeTable; //顶点表

int NumVertices; //当前顶点个数

int NumEdges; //当前边数

}

//下列算法是根据一个图的邻接矩阵建立该图的邻接表,请在处填入合适

//的内容,使其成为一个完整的算法。

AdjTable * convertM ( ) {

//将图的邻接矩阵(用this指针指示)转换为邻接表,函数返回邻接表的地址。

AdjTable * A; Edge *e;

A->NodeTable = new Vertex[NumVertices];

A->NumEdges = NumEdges;

A->NumVertices = NumVertices;

for ( int i = 0; i < NumVertices; i++ ) {

A->NodeTable[i].data = NodeTable[i];

A->NodeTable[i].adj = (1) ;

for ( int j = 0; j < NumVertices; j++ )

if ( arr[i][j] != INFINITY && arr[i][j] != 0 ) {

e = new Edge;

e->dest = j;

e->cost= (2) ;

e->link = A->NodeTable[i].adj;

(3) ;

}

}

return A;

}

7.已知带权图的邻接矩阵表示和邻接表类表示的形式描述分别如下:

(1) 邻接矩阵的定义

#define INFINITY INT_MAX //INT_MAX为最大整数,表示∞

const int MaxVertices = 20;

template struct AdjMatrix {

Type * NodeTable; //顶点表定义

float arr[Maxvertices][MaxVertices]; //邻接矩阵定义

int NumVertices; //当前顶点个数

int NumEdges; //当前边数

};

(2) 邻接表定义

struct Edge { //邻接表中边结点的定义int dest; //邻接的结点

float cost; //边的权值

Edge * link;

};

template struct Vertex { //邻接表中顶点的定义Type data;

Edge *adj;

};

template struct AdjTable { //邻接表

Vertex * NodeTable; //顶点表

int NumVertices; //当前顶点个数

int NumEdges; //当前边数

}

//下列算法是根据一个图的邻接表存储结构建立该图的邻接矩阵存储结构,

//请在处填入合适的内容,使其成为一个完整的算法

AdjMatrix * convertAL( ) {

//将图的邻接表(用this指针指示)转换为邻接矩阵,函数返回邻接矩阵的地址。

AdjMatrix * A; int i, j; Edge *p;

A->NodeTable = new Vertex[NumVertices];

A->arr = new float [Maxvertices][MaxVertices];

A->NumEdges = NumEdges;

工程造价例题及习题

工 程 造 价 刘威

一、预算定额的简单应用 作业:1、试确定人工采筛洗堆砂联合作业,工程量为200m3堆方的预算(成品率按60%计)。 2、某路基工程用10 m3以内自行式铲运机运硬土,平均运距600米,重车上坡坡度18%,试确定该铲运机铲运土方的预算定额。 3、确定下列工程的预算定额编号 (1)、干砌片石锥坡 (2)、干砌片石护脚 (3)、浆砌片石边沟 (4)、8t以内自卸汽车配合挖掘机运土5KM (5)、8t以内自卸汽车配合装载机运粘土5KM (6)、8t以内自卸汽车运输路面混合料5KM (7)、8t载重汽车运输预制构件5KM 二、路基工程中对预算定额的应用 例1、××高速公路路基土、石方工程,计有挖土方 3000000m3,其中松土500000m3、普通土1500000m3、硬土1000000m3。利用开挖土方作填方用天然密实方松土300000m3、普通土1000000m3、硬土500000m3。开炸石方计1000000m3,利用开炸石方作填方用计天然密实方300000m3。填方计压实方4000000m3。 问题: 1、计算路基设计断面方数量 2、计算计价方数量 3、计算利用方数量(压实方) 4、计算借方数量(压实方) 5、计算弃方数量

例2:某二级公路路段挖方2000 m3,其中松土400 m3,普通土1200 m3,硬土400 m3;填方数量2400 m3,本路段挖方可利用方量为1800 m3(松土200 m3,普通土1200 m3,硬土400 m3);远运利用方量为普通土400 m3(天然方),采用机动翻斗车运土,运距200m。试确定借方(压实方)数量;如借方运距为1.5km,采用75kw推土机推土,8t自卸汽车配合2 m3容量装载机运普通土,试确定上述分项工程的预算定额,并计算相应工程量下的人工、机械台班数量。 三、路面工程定额的应用 例1:某泥结碎石路面面层摊铺工程,厚度16cm,路面宽8.0m,路段长12km,试计算所需人工劳动量及压路机作业量。 例2:某冬五区沥青贯入式面层工程,路面宽9.0m、铺筑长度8km,设计厚度6cm,需铺8cm基层,已查得面层人工定额为17.7工日/1000m 2、石油沥青定额为6.283t/1000m 2,基层人工定额为19工日/1000m 2、石油沥青定额为7.004t/1000m2。试求其总劳动量和总用油量。 例3:某级配砾石路面,路面设计宽度为3.5m,已查得人工定额为18.3工日/l 000m 2、12t~15t光轮压路机定额为1.45台班/1000m 2。试问该两项的实用定额值应为多少? 例4:拖拉机带铧犁拌和某石灰、粉煤灰稳定碎石路面基层,设计配合比石灰:粉煤灰:碎石为6:12:82,设计厚度为17cm ,试以预算定额求各材料按设计

数据结构课程设计题目

数据结构课程设计 一、教学目的和要求 课程设计是加强学生实践能力的一个强有力手段。综合课设 1主要针对数据结构和 C/C++语言开展 的实践性课程。要求学生掌握数据结构的应用、算法的编写、类 C 语言的算法转换成 C ( C++)程序并 上机调试的基本方法。 课程设计要求学生在完成程序设计的同时能够写出比较规范的课程设计报告。 培 养学生综合运用所学理论知识解决复杂实际问题的实践能力、研究性学习能力和团队合作能力。 、课程设计要求 1、 选好题目: 每题一人, 每班每个题目只允许一人选做 ,学习委员将选题情况在课设第一天统计上交。 2、 课设报告 独立思考,独立完成: 课设报告出现雷同超过 60% ,不论什么原因,一律不及格。 班和班之间,相同题目的同学,可以组成小组,相互讨论,共同完成课程设计中各任务的设计和调试 要求。小组成员间, 算法思路可以相同, 程序可以类似, 但不能完全一样。 课设报告不能雷同超过 60% 。 3、 做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置 方法,准备好有关的文件。 4、 设计要点: ⑴需求分析: 在该部分中叙述总共几个模块,每个模块的功能要求。 ⑵系统设计 总体设计:定义某个数据结构的抽象数据类型及其他算法的功能说明。 详细设计:在此定义存储结构,每个部分的算法设计说明(建议描述算法采用流程图) 。 ⑶编码实现 各个算法实现的源程序,对每个题目要有相应的源程序(每个功能模块采用不同的函数实现) 。源程 序要按照程序的规则来编写, 要结构清晰, 重点函数的重点变量, 重点功能部分要加上清晰的程序注释。 程序能够运行,要有基本的容错功能,尽量避免出现操作失误时出现死循环。 ⑷调试分析 给出实现功能的一组或多组测试数据, 程序调试后, 将按照此测试数据进行测试的结果列出来。 时间 复杂度分析,每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?) ,算法的改进设 想。 ⑸课设总结: 课程设计过程的收获、 遇到问题、 遇到问题解决问题过程的思考、 程序调试能力的思考、 对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。 5、 实现的结果必须进行检查和演示; 程序源代码和程序的说明文件必须上交, 作为考核内容的一部分; (上交时文件夹的取名规则为: “课设题目( *** 设计完成) ”,如“资源管理系统的设计与实现(张三设 计完成) ”。该文件夹下包括三个目录: “源代码 ”、 “可执行文件 ”、 “张三 _课程设计报告 ”。由学习委员 按规定时间统一上交) 。 6、报告提交 形式:纸介质(要求B5纸张打印,加封皮)和电子文档。 三、考核方法和内容 根据课程设计过程中学生的学生态度、 题目完成情况、 课程设计报告书的质量和回答问题的情况等 按照 10%、 40%、 30%、 20% 加权综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。 评分标准: 任务书( 签名,把题目要求贴在相应位置,注意下划线 ) ---------- 目录(注意目录的格式,页码) -------- 1、设 计任务( 题目要求 ) ---- 2 、需求分析( 准备选用什么数据逻辑结构?数据元素包含哪些属性?需要哪 些函数?为什么要这样设计?最后列出抽象数据类型定义 ) ----------- 3 、系统设计( 设计实现抽象数据类型, 包含选择什么物理存储方式?数据元素的结构体或类定义,以及各函数的设计思路,算法,程序流程 图等 ) 4 、编码实 现( 重要函数的实现代码 ) --------------------------- 5 、调试分析( 选择多组测试数据、运行截图、结 果分析 ) ---- 6、课设总结( 心得体会 ) ----- 7 、谢辞 8 、参考文献; 课设报告打印要求: B5纸张打印,报告总页数控制在 10—15页内,报告中不能全是代码, 报告中代码总量控制在150行内。 版式:无页眉,有页码,页码居中 优秀: 答辩所有问题都能答出 良好: 答辩所有问题都能答出 中等: 答辩大部分问题能答出 及格: 答辩大部分问题能答出 不及格:答辩几乎答不出问题 课设报告的装订顺序如下: + 报告良好 +报告一般 + 报告良好 +报告一般 或者 报告几乎都是代码 或者 雷同部分达到 60%

数据结构实验总结报告

数据结构实验总结报告 一、调试过程中遇到哪些问题? (1)在二叉树的调试中,从广义表生成二叉树的模块花了较多时间调试。 由于一开始设计的广义表的字符串表示没有思考清晰,处理只有一个孩子的节点时发生了混乱。调试之初不以为是设计的问题,从而在代码上花了不少时间调试。 目前的设计是: Tree = Identifier(Node,Node) Node = Identifier | () | Tree Identifier = ASCII Character 例子:a(b((),f),c(d,e)) 这样便消除了歧义,保证只有一个孩子的节点和叶节点的处理中不存在问题。 (2)Huffman树的调试花了较长时间。Huffman编码本身并不难处理,麻烦的是输入输出。①Huffman编码后的文件是按位存储的,因此需要位运算。 ②文件结尾要刷新缓冲区,这里容易引发边界错误。 在实际编程时,首先编写了屏幕输入输出(用0、1表示二进制位)的版本,然后再加入二进制文件的读写模块。主要调试时间在后者。 二、要让演示版压缩程序具有实用性,哪些地方有待改进? (1)压缩文件的最后一字节问题。 压缩文件的最后一字节不一定对齐到字节边界,因此可能有几个多余的0,而这些多余的0可能恰好构成一个Huffman编码。解码程序无法获知这个编码是否属于源文件的一部分。因此有的文件解压后末尾可能出现一个多余的字节。 解决方案: ①在压缩文件头部写入源文件的总长度(字节数)。需要四个字节来存储这个信息(假定文件长度不超过4GB)。 ②增加第257个字符(在一个字节的0~255之外)用于EOF。对于较长的文件,

会造成较大的损耗。 ③在压缩文件头写入源文件的总长度%256的值,需要一个字节。由于最后一个字节存在或不存在会影响文件总长%256的值,因此可以根据这个值判断整个压缩文件的最后一字节末尾的0是否在源文件中存在。 (2)压缩程序的效率问题。 在编写压缩解压程序时 ①编写了屏幕输入输出的版本 ②将输入输出语句用位运算封装成一次一个字节的文件输入输出版本 ③为提高输入输出效率,减少系统调用次数,增加了8KB的输入输出缓存窗口 这样一来,每写一位二进制位,就要在内部进行两次函数调用。如果将这些代码合并起来,再针对位运算进行一些优化,显然不利于代码的可读性,但对程序的执行速度将有一定提高。 (3)程序界面更加人性化。 Huffman Tree Demo (C) 2011-12-16 boj Usage: huffman [-c file] [-u file] output_file -c Compress file. e.g. huffman -c test.txt test.huff -u Uncompress file. e.g. huffman -u test.huff test.txt 目前的程序提示如上所示。如果要求实用性,可以考虑加入其他人性化的功能。 三、调研常用的压缩算法,对这些算法进行比较分析 (一)无损压缩算法 ①RLE RLE又叫Run Length Encoding,是一个针对无损压缩的非常简单的算法。它用重复字节和重复的次数来简单描述来代替重复的字节。尽管简单并且对于通常的压缩非常低效,但它有的时候却非常有用(例如,JPEG就使用它)。 变体1:重复次数+字符 文本字符串:A A A B B B C C C C D D D D,编码后得到:3 A 3 B 4 C 4 D。

工程概预算自考计算题习题(含答案)

七、计算题: 1、已知建筑平面图及剖面图如图示,墙厚370 mm,部分楼层墙厚240 mm,内部隔层每层层高2.7 m,试计算其建筑面积。 解:建筑面积=(22+0.37)×(10+0.37)+(5+0.37)×(5+0.37)=260.81m2 2、某工程捣制钢筋混凝土独立基础,模板接触面积为50m2,查表可知一次使用模板每10m2需用板材 0.36m3,方才0.45m3,模板周转次数6次,每次周转损耗率16.6%,试计算混凝土模板一次需用量和施工定额摊销量。 解:混凝土模板摊销量计算 1)计算混凝土模板一次使用量: 模板一次使用量=50×0.36 m3/10 m2=1.8m3 2)计算周转使用量 模板周转使用量 ={一次使用量×[1+(周转次数-1)×损耗率]}/周转次数 =1.8×[1+(6-1)×16.6%] /6 =0.549m3 3)计算回收量(模板) 模板回收量= 一次使用量×(1-损耗率)/周转次数 =1.8/6×(1-16.6%)=0.25m3 4)计算摊销量(模板) 模板摊销量=周转使用量—回收量=0.549-0.25=0.299 m3 3、依据湖北省建筑装饰工程消耗量定额及统一基价表,如图某单层建筑物,外墙顶面高度3.00米,外墙设计采用15mm厚1∶1∶6混合砂浆打底,50×230外墙砖贴面,室内外地坪高差-0.45m,设计地面做法为30mm 厚细石混凝土找平,1∶3水泥砂浆铺贴300×300mm地砖面层,踢脚为150mm高地砖。试计算楼地面工程装饰的工程量。(门、窗居墙中安装,墙厚240mm,门窗框厚90mm,每个房间的中心轴线尺寸为3300*6000mm, 窗C1、C2、M1洞口尺寸分别为:1.5×1.2m、1.5×2.0m、0.9×2.4m)。 解:楼地面工程项目和工程量分别为: ⑴30mm细石砼找平层(3.3-0.24)×(6-0.24)×4=70.50m2 ⑵1:3水泥砂浆铺贴300×300地砖楼地面70.5+0.9×(0.24-0.15)÷2×4=70.66m2 ⑶地砖踢脚线 (3.3-0.24+6-0.24)×2×4=70.56m 4、某土方工程二类土,挖基槽的工程量为450m3,每天有24名工人负责施工,时间定额为0.205工日/m3,试计算完成该分项工程的施工天数。 解:(1)计算完成该分项工程所需总劳动量 总劳动量=450×0.205=92.25(工日) (2)计算施工天数 施工天数=92.25/24=3.84(取4天) 即该分项工程需4天完成。 5、有140 m3二砖混水外墙,由11人砌筑小组负责施工,产量定额为0.862m3/工日,试计算其施工天数。 解(1)计算小组每工日完成的工程量 工程量=11×0.862=9.48(m3) (2)计算施工天数 施工天数=140/9.48=14.77(取15天) 即该混水外墙需15天完成。 6、已知采用M5水泥砂浆砌筑砖基础200m3。试确定其预算价值。 解:(以某省现行预算定额为例)从建筑工程预算定额目录中,查出砖基础的定额项目3-1,通过判断可知,砌筑砖基础分项工程内容与定额规定相一致,即可直接套用定额。从定额表中查得砌筑砖基础的定额基价为1487.90元

数据结构课程设计-学生成绩管理系统

淮阴工学院 数据结构课程设计报告 选题名称:学生成绩管理系统 系(院):数理学院 专业:信息与计算科学 班级:计科1102班 姓名:徐连喜学号: 1104101233 指导教师:周海岩 学年学期:2011 ~ 2012 学年第 1 学期 2012 年06 月06 日

【摘要】 21世纪,科学技术突飞猛进,经济知识和信息产业初见端倪,特别是信息技术和网络技术的讯速发展和广泛应用,对社会的政治,经济,军事,文化等领域产生越来越深刻。学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。本论文叙述到的学生成绩管理系统是用IIS+ASP网页编程+ACCESS数据库+DREAMWEAVER MX 2004+SQL查询语言实现的。重点介绍了学生成绩管理系统的实现过程:包括系统分析,系统调查,功能设计,数据库设计,系统实现,系统测试和调试等。本系统主要功能有查询学生成绩、单个添加学生成绩、批量添加学生成绩、删除学生成绩、管理页面和修改管理员密码等内容。 【关键词】 成绩管理;成绩查询;C++

目录 中文摘要。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 1 1绪论。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 4 1.1 选题背景。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 5 1.2 需求分析。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 6 2总体设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。7 2.1程序设计组成框图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。8 2.2 模块功能说明。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。9 2.3 程序流程图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。10 2.4 主要函数之间相互调用。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。11 3 在设计过程中的感受。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。12 致谢。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。13 参考文献。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。14附录:源程序清单。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。15

数据结构课程设计题目选择

数据结构课程设计题目 说明: (1)选用语言:C或Java语言; (2)需要注明3人(可少于3人)小组各自承担和完成的任务(据此给予成绩); (3)如下带“*”的题目,“*”越多,难度越大一些,分值权重更高---要得到更高分数,推荐选择。 要求: (1) 用中文给出设计说明书(含重要子函数的流程图); (2) 给出测试通过、能实现相应功能的源代码; (3) 测试报告。 0、小学数学四则混合运算试题出题、评价、题库自动生成与组卷系统(****)---已经有2组选择 任务: (1)将随机给出的四则混合运算表达式显示在计算机显示器上,要求应试者给出答案;并且使用堆栈对该表达式求值,同给出的答案进行比较,判断 正确和错误。给出鼓励信息和嘉奖信息; (2)保存多人在不同时间应试的题目与他(或她)给出的答案,评价所出题目的难易程度(通过多人回答正确与否的情况给出),形成题库; (3)按照用户给出的题目难易程度指标(例如让50人的得分满足怎样的正态分布,如90分以上10%,80分以上30%,70分以上30%,60分以上20%,60分 以下10%),从题库中抽取不同的题目,组成试卷。 要求:随机产生的题目中,参加运算的数据随机、运算符随机。题目涉及加减乘除,带括弧的混合运算;随时可以退出;保留历史分数,能回顾历史,给出与历史分数比较后的评价。 1、集合的并、交和差运算---已经有1组选择 任务:编制一个能演示执行集合的并、交和差运算的程序。 要求: (1) 集合的元素限定为小写字母字符[…a?..?z?] 。 (2) 演示程序以用户和计算机的对话方式执行。 实现提示:以链表表示集合。 选作内容: (1) 集合的元素判定和子集判定运算。 (2) 求集合的补集。 (3) 集合的混合运算表达式求值。 (4) 集合的元素类型推广到其他类型,甚至任意类型。 2、停车场管理------已经有2组选择 任务:设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次有北向南排列(大门在最南端,最先到达的第一车停放在车场的最北端),若车场内已停满n辆车,那么后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 要求:以栈模拟停车场,以队列模拟车场外的便道。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停车不收费)。栈以顺序存储结构实现,队列以链表结构实现。 3、哈夫曼码的编/译码系统(**)---已经有1组选择

数据结构课程设计题目及要求

实验一~实验四任选一题;实验五~实验九任选一题。 实验一运动会分数统计 一、实验目的: (1)熟练掌握线性表的两种存储方式 (2)掌握链表的操作和应用。 (3)掌握指针、结构体的应用 (4)按照不同的学校,不同项目和不同的名次要求,产生各学校的成绩单、团体总分报表。 二、实验内容: 【问题描述】 参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表。 【基本要求】 产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。 【测试数据】 对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。 【实现提示】 可以假设m≤20,m≤30,w≤20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名、校名(和成绩)。 【选作内容】 允许用户指定某些项目可采取其他名次取法。

实验二停车场管理 一、实验目的: (1)熟练掌握栈顺存和链存两种存储方式。 (2)掌握栈的基本操作及应用。 (3)以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。 二、实验内容: 【问题描述】 设停车场是一个可停放n辆汽车的长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车信放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场院,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 【基本要求】 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。 【测试数据】 设n=2,输入数据为:(A,1,5),(A,1,15),(A,3,20),(A,4,25),(A,5,30),(D,2,35),(D,4,40),(E,0,0)。其中:A表示到达(Arrival);D表示离去(Departure);E表示输入结束(End)。 【实现提示】 需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。 【选作内容】 (1)两个栈共享空间,思考应开辟数组的空间是多少? (2)汽车可有不同种类,则他们的占地面积不同收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积。(3)汽车可以直接从便道开走,此时排在它前面的汽车要先开走让路,然后再依次排到队尾。 (4)停放在便道上的汽车也收费,收费标准比停放在停车场的车低,请思考如何修改结构以满足这种要求。

数据结构第七章图练习及答案

1.拓扑排序的结果不是唯一的,试写出下图任意2个不同的拓扑序列。 2.写出求以下AOE网的关键路径的过程。要求:给出每一个事件和每一个活动的最早开始时间和最晚开始时间。 【解析】解题关键是弄清拓扑排序的步骤 (1)在AOV网中,选一个没有前驱的结点且输出;(2)删除该顶点和以它为尾的弧;(3)重复上述步骤直至全部顶点均输出或不再有无前驱的顶点。 【答案】(1)0132465 (2)0123465 【解析】求关键路径首先求关键活动,关键活动ai的求解过程如下 (1)求事件的最早发生时间ve(j), 最晚发生时间vl(j); (2)最早发生时间从ve(0)开始按拓扑排序向前递推到ve(6), 最晚发生时间从vl(6)按逆拓扑排序向后递推到vl(0); (3)计算e(i),l(i):设ai由弧表示,持续时间记为dut,则有下式成立 e(i)=ve(j) l(i)=vl(k)-dut() (4)找出e(i)-l(i)=0的活动既是关键活动。 【答案】

关键路径为:a0->a4->a6->a9 7.1选择题 1.对于一个具有n个顶点和e条边的有向图,在用邻接表表示图时,拓扑排序算法时间复杂度为(B) A)O(n) B)O(n+e) C)O(n*n) D)O(n*n*n) 2.设无向图的顶点个数为n,则该图最多有(B)条边。 A)n-1 B)n(n-1)/2 C)n(n+1)/2 D)n2 3.连通分量指的是(B) A)无向图中的极小连通子图 B)无向图中的极大连通子图 C)有向图中的极小连通子图 D)有向图中的极大连通子图 4.n个结点的完全有向图含有边的数目(D) A)n*n B)n(n+1) C)n/2 D)n*(n-1) 5.关键路径是(A) A)AOE网中从源点到汇点的最长路径 B)AOE网中从源点到汇点的最短路径 C)AOV网中从源点到汇点的最长路径 D)AOV网中从源点到汇点的最短路径 6.有向图中一个顶点的度是该顶点的(C) A)入度B)出度C)入度与出度之和D)(入度+出度)/2 7.有e条边的无向图,若用邻接表存储,表中有(B)边结点。 A) e B)2e C)e-1 D)2(e-1) 8.实现图的广度优先搜索算法需使用的辅助数据结构为(B)

数据结构课程设计

课程设计说明书 课程名称:数据结构和算法 设计题目:多种排序 院系:计算机科学与信息工程学院 学生姓名: 学号: 专业班级:计科嵌入式(12-1) 指导教师: 年月日

课程设计任务书 设计题目表达式计算程序设计 学生姓名所在院系计科专业、年级、班12计科(嵌入式)设计要求: 1) 采用如下七种方法实现上述问题求解:插入排序、希尔排序、起泡排序、快速排 序、选择排序、堆排序、归并排序。 2) 统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出 其中两种较快的方法。并将数据序列和不同的查找算法的性能结果记录入txt 文件。 学生应完成的工作: 1. 利用随机函数产生N 个随机整数(10000 以上)。 2. 对这些数字进行排序。 3. 采用插入、希尔、起泡、快速、选择、归并、堆排序方法解决问题。 4. 对不同的排序算法进行性能比较并记录。 参考文献阅读: 1. 《数据结构(C 语言版)》严蔚敏清华大学出版社 2. 《C 语言程序设计》丁峻岭中国铁道出版社 3. 《C 程序设计》谭浩强清华大学出版社 工作计划: 任务下达日期:年月日 任务完成日期:年月日 指导教师(签名):学生(签名):

多种排序 摘要: 排序是算法中最基础的问题之一,经典的排序算法是前人不断总结得到的,基于比较的方法是比较直观的方式,主要存在插入法排序、堆排序、希尔排序、归并排序、快速排序,每一种排序算法都有自己的优缺点,比如插入法排序适用于那些长度短的排序,要是长的话,有些爱莫能助啦,堆排序主要是依据了二叉堆的特性,但是创建堆的过程也是一个复杂的问题,希尔排序的过程是一个不断精确的过程,但是目前也只是一个经验方式。归并排序是一个递归的问题,采用分治的思想实现,但是这种算法需要额外的存储空间,快速排序虽然是实践中比较常用的算法,但是对于有序的数组采用快速排序就是灾难。比较型算法的时间复杂度最优也只能到达O(NlogN)。 关键词: 归并排序快排排序选择排序冒泡排序 插入排序堆排序希尔排序内部排序

造价考试典型例题汇总

造价考试典型例题汇总 招投标小例题: 多选题 1、评标的原则有() A.竞争优选 B.公正,公平,科学管理 C.质量好,信誉高,价格合理,工期适当,施工方案先进可行 D.规范性与灵活性相结合 E.反不正当竞争 答案:A,B,C,D,E 分析:评标要遵循如下原则和程序:竞争优选、公正、公平、科学合理、质量好、信誉好、价格合理、工期适当、施工方案先进可行、反不正当竞争、规范性与灵活性相结合。 2.标底是[ ]. A.建筑安装工程造价表现形式 B.招标工程的预期价格 C.是评标的依据之一 D.由上级主管部门编制并审定的 E. 判断投标是否的依据 答案:A,B,C 分析:标底是建筑安装工程造价表现形式,是招标工程的预期价格,是判断投标价格是否合理的依据,并作为评标的依据之一。 3.招标单位在编制标底时需考虑的因素包括[ ]. A.材料价格因素 B.工程质量因素 C.工期因素 D.本招标工程资金来源因素 E.本招标工程的自然地理条件和招标工程范围等因素

答案:A,B,C,E 分析:该题系1997年试点考试试题。该题考点是标底编制的依据及考虑的因素,涉及面较宽。按培训教材规定,标底必须适应目标工期的要求,必须适应招标方的质量要求,必须适应市场价格的变化,必须合理考虑本招标工程的自然地理条件和招标工程范围等。D 有较大迷惑性。"工程的资金来源"在编标底时是不予考虑的。 预算小例题: 单选题: 1、编制施工图预算主要有单价法和()两种方法。 A、估价法 B、扩大单价法 C、指数法 D、实物法 答案:D 分析:编制施工图预算主要有单价法和实物法两种方法。 2.工作过程是同一工人或小组所完成的在技术操作上相互有机联系的[ ]的总合体。 A.工序 B.动作 C.次序 D.工艺 答案:A 分析:施工过程根据组织上的复杂程度可分为工序、工作过程和综合工作过程。应注意把握它们之间的联系和区别。 3.多余工作时间属于[ ]. A.有效工作时间 B.损失时间 C.定额时间 D.必需损耗的时间 答案:B 分析:工人工作时间可分为定额时间和非定额时间,多余工作时间属于损失时间。 4.材料定额消耗量中的材料净耗量是指[ ]. A.材料必需消耗量 B.施工中消耗的所有材料量 C.直接用到工程上,构成工程实体的消耗量 D.在合理和节约使用材料前提下的消耗量 答案:C 分析:材料定额消耗量是材料的必需消耗量,又可分为材料净耗量和不可避免的损耗量,对有关概念应注意把握。 5.在确定人工定额消耗量的过程中,整理观察资料的方法是[ ]. A.平均修正法 B.移动加权法 C.指数平滑法 D.曲线拟合法

数据结构课程设计报告

数据结构课程设计 设计说明书 TSP 问题 起止日期:2016 年 6 月27 日至2016 年7 月 1 日 学生姓名 班级 学号 成绩 指导教师( 签字) 2016 年7 月 1 日

目录 第1 章需求分析.................................................................................1... 1.1 简介 (1) 1.2 系统的开发背景 (1) 1.3 研究现状 (1) 第2 章概要设计.................................................................................2... 2.1 系统开发环境和技术介绍 (2) 2.2 系统需求分析 (2) 2.2.1 总体功能分析 (2) 2.2.2 核心功能分析 (3) 第3 章详细设计...................................................................................4... 3.1 系统开发流程 (4) 3.2 系统模块设计 (4) 3.3 系统结构 (6) 3.2 系统流程图 (6) 第4 章调试分析...................................................................................7... 4.1 程序逻辑调试 (7) 4.2 系统界面调试 (8) 第5 章测试结果...................................................................................9... 5.1 测试环境 (9) 5.2 输入输出测试项目 (9) 5.3 测试结果 (10) 结论.....................................................................................................1..1.. 参考文献................................................................................................1..1. 附录.......................................................................................................1..2..

关于数据结构课程设计心得体会范文

关于数据结构课程设计心得体会范文 心得体会是指一种读书、实践后所写的感受性文字。是指将学习的东西运用到实践中去,通过实践反思学习内容并记录下来的文字,近似于经验总结。下面是小编搜集的关于数据结构课程设计心得体会范文,希望对你有所帮助。 关于数据结构课程设计心得体会(1) 这学期开始两周时间是我们自己选题上机的时间,这学期开始两周时间是我们自己选题上机的时间,虽然上机时间只有短短两个星期但从中确实学到了不少知识。上机时间只有短短两个星期但从中确实学到了不少知识。 数据结构可以说是计算机里一门基础课程,据结构可以说是计算机里一门基础课程,但我觉得我们一低计算机里一门基础课程定要把基础学扎实,定要把基础学扎实,然而这次短短的上机帮我又重新巩固了 c 语言知识,让我的水平又一部的提高。数据结构这是一门语言知识让我的水平又一部的提高。数据结构这是一门知识,纯属于设计的科目,它需用把理论变为上机调试。 纯属于设计的科目,它需用把理论变为上机调试。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。来说具有一定的难度。它是其它编程语言的一门基本学科。我选的上机题目是交叉合并两个链表,对这个题目,我选的上机题目是交叉合并两个链表,对这个题目,我觉得很基础。刚开始调试代码的时候有时就是一个很小的错觉得很基础。 刚开始调试代码的时候有时就是一个很小的错调试代码的时候误,导致整个程序不能运行,然而开始的我还没从暑假的状导致整个程序不能运行,态转到学习上,每当程序错误时我都非常焦躁,态转到学习上,每当程序错误时我都非常焦躁,甚至想到了放弃,但我最终找到了状态,一步一步慢慢来,放弃,但我最终找到了状态,一步一步慢慢来,经过无数次的检查程序错误的原因后慢慢懂得了耐心是一个人成功的必然具备的条件! 同时,通过此次课程设计使我了解到,必然具备的条件! 同时,通过此次课程设计使我了解到,硬件语言必不可缺少,要想成为一个有能力的人,必须懂得件语言必不可缺少,要想成为一个有能力的人,硬件

第七章 图

第七章图 一、选择题 1.图中有关路径的定义是( A ) A.由顶点和相邻顶点序偶构成的边所形成的序列 B.由不同顶点所形成的序列 C.由不同边所形成的序列 D.上述定义都不是 2.设无向图的顶点个数为n,则该图最多有(B )条边。 A.n-1 B.n(n-1)/2 C. n(n+1)/2 D.0 E.n2 3.一个n个顶点的连通无向图,其边的个数至少为( A )。 A.n-1 B.n C.n+1 D.nlogn; 4.要连通具有n个顶点的有向图,至少需要( B )条边。】 A.n-l B.n C.n+l D.2n 5.n个结点的完全有向图含有边的数目( D )。 A.n*n B.n(n+1) C.n/2 D.n*(n-l) 6.一个有n个结点的图,最少有( B )个连通分量,最多有( D )个连通分量。 A.0 B.1 C.n-1 D.n 7.在一个无向图中,所有顶点的度数之和等于所有边数( B )倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的( C )倍。 A.1/2 B.2 C.1 D.4 8.用有向无环图描述表达式(A+B)*((A+B)/A),至少需要顶点的数目为( A)。 A.5 B.6 C.8 D.9 9.用DFS遍历一个无环有向图,并在DFS算法退栈返回时打印相应的顶点,则输出的顶点序列是(A )。 A.逆拓扑有序 B.拓扑有序 C.无序的 10.下面结构中最适于表示稀疏无向图的是( C ),适于表示稀疏有向图的是( BDE )。 A.邻接矩阵 B.逆邻接表 C.邻接多重表 D.十字链表 E.邻接表 11.下列哪一种图的邻接矩阵是对称矩阵?( B ) A.有向图 B.无向图 C.AOV网 D.AOE网 12.从邻接阵矩可以看出,该图共有(B)个顶点;如果是有向图该图共有(B)条弧;如果是无向图,则共有(D)条边。 ①.A.9 B.3 C.6 D.1 E.以上答案均不正确 ②.A.5 B.4 C.3 D.2 E.以上答案均不正确 ③.A.5 B.4 C.3 D.2 E.以上答案均不正确 14.用相邻矩阵A表示图,判定任意两个顶点Vi和Vj之间是否有长度为m的路径相连,则只要检查( C )的第i行第j列的元素是否为零即可。 A.mA B.A C.A m D.Am-1 15.下列说法不正确的是( C )。 A.图的遍历是从给定的源点出发每一个顶点仅被访问一次 C.图的深度遍历不适用于有向图 B.遍历的基本算法有两种:深度遍历和广度遍历 D.图的深度遍历是一个递归过程 16.无向图G=(V,E),其中:V={a,b,c,d,e,f},E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)},对该图进行深度优先遍历,得到的顶点序列正确的是( D )。 A.a,b,e,c,d,f B.a,c,f,e,b,d C.a,e,b,c,f,d D.a,e,d,f,c,b 17.设图如右所示,在下面的5个序列中,符合深度优先遍历的序列有多少?( D ) a e b d f c a c f d e b a e d f c b a e f d c b a e f d b c A.5个 B.4个 C.3个 D.2个 18.下图中给出由7个顶点组成的无向图。从顶点1出发,对它进行深度优先遍历得到的序列是(C),而进行广度优先遍历得到的顶点序列是(C)。 ①.A.1354267 B.1347652 C.1534276 D.1247653 E.以上答案均不正确 ②.A.1534267 B.1726453 C.l354276 D.1247653 E.以上答案均不正确 19.下面哪一方法可以判断出一个有向图是否有环(AB): A.深度优先遍历 B.拓扑排序 C.求最短路径 D.求关键路径 20.在图采用邻接表存储时,求最小生成树的 Prim算法的时间复杂度为( B )。 A. O(n) B. O(n+e) C. O(n2) D. O(n3) 21.下面是求连通网的最小生成树的prim算法:集合VT,ET分别放顶点和边,初始为( C),下面步骤重复n-1次: a:( A);b:( B);最后:(A)。 (1).A.VT,ET为空 B.VT为所有顶点,ET为空 C.VT为网中任意一点,ET为空 D.VT为空,ET为网中所有边 (2).A.选i属于VT,j不属于VT,且(i,j)上的权最小 B.选i属于VT,j不属于VT,且(i,j)上的权最大

数据结构课程设计排序算法总结

排序算法: (1) 直接插入排序 (2) 折半插入排序(3) 冒泡排序 (4) 简单选择排序 (5) 快速排序(6) 堆排序 (7) 归并排序 【算法分析】 (1)直接插入排序;它是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好的序的有序表中,从而得到一个新的、记录数增加1的有序表。 (2)折半插入排序:插入排序的基本操作是在一个有序表中进行查找和插入,我们知道这个查找操作可以利用折半查找来实现,由此进行的插入排序称之为折半插入排序。折半插入排序所需附加存储空间和直接插入相同,从时间上比较,折半插入排序仅减少了关键字间的比较次数,而记录的移动次数不变。 (3)冒泡排序:比较相邻关键字,若为逆序(非递增),则交换,最终将最大的记录放到最后一个记录的位置上,此为第一趟冒泡排序;对前n-1记录重复上操作,确定倒数第二个位置记录;……以此类推,直至的到一个递增的表。 (4)简单选择排序:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换之。 (5)快速排序:它是对冒泡排序的一种改进,基本思想是,通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 (6)堆排序: 使记录序列按关键字非递减有序排列,在堆排序的算法中先建一个“大顶堆”,即先选得一个关键字为最大的记录并与序列中最后一个记录交换,然后对序列中前n-1记录进行筛选,重新将它调整为一个“大顶堆”,如此反复直至排序结束。 (7)归并排序:归并的含义是将两个或两个以上的有序表组合成一个新的有序表。假设初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2或1的有序子序列;再两两归并,……,如此重复,直至得到一个长度为n的有序序列为止,这种排序称为2-路归并排序。 【算法实现】 (1)直接插入排序: void InsertSort(SqList &L){ for(i=2;i<=L.length ;i++) if(L.elem[i]L.elem[0];j--) L.elem [j+1]=L.elem [j]; L.elem [j+1]=L.elem[0]; } } (2)折半插入排序:

概算例题

1.投资项目概算的种类按工程项目划分有_投资项目总概算、单项工程综合概(预)算、单位工程概(预)算。 2.预算定额中的人工消耗指标包括_______、_______、_______、_______。3.材料预算价格是指建筑安装工程材料从_______运达_______后的出库_______。4.建筑面积包括使用面积、结构面积和辅助面积三部分。 5.建筑物当20米或6层以上时,才能计算高层建筑超高增加费。 6.我国现行建设项目工程造价的构成中,工程建设其他费用包括【】 A.基本预备费 B.税金 C.建设期贷款利息 D.与未来企业生产经营有关的其他费用7.土建工程造价中,计划利润的计费基础是【】 A.直接工程费+间接费 B.直接费+间接费C.人工费 D.直接工程费8.下列定额分类中属于按照生产因素分类

的是【】 A.材料消耗、机械消耗、器具消耗 B.劳动定额、材料消耗定额、机械台班定额 C.机械消耗定额、材料消耗定额、建筑工程定额 D.资金消耗定额、劳动消耗定额、机械消耗定额 9.建筑安装预算定额具有【】 A.利学性、统一性、灵活性 B.强制性、统一性、法令性 C.科学性、法令性、综合性 D.全国范围内统一执行 10.按照理论计算半砖厚砖墙每立方米的标准砖用量是【】 A.429块 B.510块 C.552块D.627块 11.概算定额是确定一定计量单位______的人工、材料和机械台的消耗量的一种标准。【】 A.分项工程结构构件 B.扩大分项工程和扩大结构构件

C.单位工程 D.单项工程 12.已知某施工机械耐用总台班为4000台班,大修间隔台班为800台班,一次大修理费为10000元,则该施工机械的台班大修理费为【】 A.15元/台班 B.12.5元/台班 C.10元/台班 D.75元/台班13.单层建筑物内设有部分楼层.计算建筑面积时【】 A.仅计算首层建筑面积 B.仅计算二层及以上建筑面积 C.均不计算建筑面积 D.均应计算建筑面积 14.一栋四层砖混住宅楼,勒脚以上结构外围水平面积每层为930.0M2.二层及以上每层有8个无围护结构的挑阳台,每个阳台水平投影面积 4.0M2,该住宅楼的建筑面积为【】 A.3816 M2 B. 3784 M2 C. 3768 M2 D. 3720 M2

相关主题
文本预览
相关文档 最新文档