哈工大 数据结构 2010春A卷 试题

哈工大 数据结构  2010春A卷 试题
哈工大 数据结构  2010春A卷 试题

哈工大2010年春季学期

数据结构与算法 A 试 卷

一、填空题(每空1分,共15分) 1. 在顺序存储的二叉树中,编号为i 和j 的两个结点处在同一层的条件是____________。 2.某二叉树的前序遍历序列是ABCDEFG ,中序遍历序列是CBDAFGE ,则其后序遍历序列是_______________。 3.在有n 个叶子的哈夫曼树中,分支结点总数为___________个。 4.对于含有n 个顶点e 条边的连通图,利用Prim 算法求最小生成树的时间复杂度为___________。 5. 表达式a*(b+c)-d 的后缀表达式是___________。 6. 假定一棵二叉树的结点数为18,则它的最小深度为_______,最大深度为______。 7. 设有一个n 阶的下三角矩阵A ,如果按照行的顺序将下三角矩阵中的元素(包括对角线上元素)存放在n(n+1)个连续的存储单元中,则A[i][j]与A[0][0]之间有_______ 个数据元素。 8. 设一组初始记录关键字序列为(20,18,22,16,30,19),则根据这些初始关键字序列建成的初始堆为________________________。 9. 磁盘文件的归并技术有______________、____________、__________。 10. 设有向图G 中有向边的集合E={<1,2>,<2,3>,

<1,4>,<4,2>,<4,3>},则该图的一种拓扑序列为____________________。 11.设一组初始记录关键字序列为(345,

253,674,924,627),则用基数排序需要进行________趟的分配和回收才能使得初始关键字序列变成有序序列。 12. 利用Dijkstra 算法求从有向图顶点v1到其他各顶点的最短路径要求边上权值_________。

二、选择题(每题1分,共15分)

1.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用___________存储方式最节省时间。

A. 顺序表

B.双链表

C. 单循环链表

D. 带头结点的双循环链表0

2.在一个具有n个单元的顺序栈中,假定以地址低端(即下标为0的单元)作为栈底,以top作为栈顶指针,当出栈时,top的变化为______。

A. 不变

B. top=0;

C.top=top-1;

D. top=top+1; 3.设一组初始关键字记录关键字为(20,15,14,18,21,36,40,10),则以20为基准记录的一趟快速排序结束后的结果为_________。

A、10,15,14,18,21,36,40,20

B、10,15,14,18,20,40,36,21

C、10,15,14,20,18,40,36,2l

D、15,10,14,18,20,36,40,21

4.任何一棵二叉树的叶子结点在前序、中序、后序遍历序列中的相对次序________。

A.肯定不发生改变

B.肯定发生改变

C.不能确定

D.有时发生变化

5.用有向无环图描述表达式(A+B)*((A+B)/A),至少需要顶点的数目为_________。

A.5

B. 6

C. 8

D. 9

6. 对线性表进行二分查找时,要求线性表必须___________。

A、以顺序方式存储

B、以链接方式存储

C、以顺序方式存储,且数据元素有序

D、以链接方式存储,且数据方式有序

7. 设散列表表长m=14,散列函数H(k)=k mod 11。表中已有15、38、

61、84四个元素,如果用线性探侧法处理冲突,则元素49的存储

地址是_________。

A. 8

B. 3

C. 5

D. 9

8.若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定

的,则可选择的排序方法是_________。

A.快速排序

B.堆排序

C.归并排序

D. 插入排序

9. 下面关于m阶B树的说法正确的是__________。

①每个结点至少有两株非空子树

②树中每个结点至多有m-1个关键字

③所有的叶子都在同一层上

④当插入一个记录引起B树分裂后,树增高一层

A. ①②③

B.②③

C. ②③④

D. ①③

10. 已知一个有序表为(12,18,24,35,47,50,62,83,90,115,

134),当折半查找值为90的元素时,经过_______次比较后查找成功。

A.2

B.3

C.4

D.5

11.能有效缩短关键路径长度的方法是_________。

A.缩短任意一个活动的持续时间

B.缩短关键路径上任意一个关键活动的持续时间

C.缩短多条关键路径上共有的任意一个关键活动的持续时间

D.缩短所有关键路径上共有的任意一个关键活动的持续时间

12.在采用线性探测法处理冲突所构成的闭散列表上进行查找,可能要

探测多个位置,在查找成功的情况下,所探测的这些位置的关键字

值________。

A.一定都是同义词

B.一定都不是同义词

C.不一定都是同义词

D.都相同

13.设哈夫曼编码的长度不超过4,若已对两个字符编码为1和01,

则最多还可以对_______个字符编码。

A.2 B.3 C.4 D.5

14.已知图的邻接表如下所示,根据算法,则从顶点0出发深度优先

遍历的结点序列是____________。

A.0 1 3 2

B. 0 2 3 1

C. 0 3 2 1

D. 0 1 2 3

15. 在具有n个结点的有序单链表中插入一个新结点并仍然有序的

时间复杂度是_________。

A.O(1)

B.O(n)

C.O(n2)

D.O(nlog2n)

三、简答题:每题10分,共20分

. 1.一个按数组元素有序的一维数组一定是堆吗?请说明理由。

2. 设有一组初始记录关键字为(45,80,48,40,22,78),可以构造出

一棵二叉排序树,若不是平衡树则调整平衡,并给出其前序遍历该树的序列,并写出右旋转函数算法。

四、算法设计:每题10分,共20分

要求:

⑴描述算法设计的基本思想

⑵描述算法的详细实现步骤

⑶根据设计思想和实现步骤,采用程序设计语言描述算法(使用C 或C++或JA VA 语言实),关键之处请给出简要注释。

(栈、队列的存储结构、基本操作可以直接引用)

1.对给定的序号j(1<j<n),要求在无序记录A[1]~A[n]中找到按关键码从小到大排在第j位上的记录,试利用快速排序的划分思

想设计算法实现上述查找。

2.设计算法,判断以邻接表存储的有向图中是否存在由顶点vi到顶点vj的路径(i≠j)。

参考答案:

一.填空:1.logi=logj 2.CDBGFEA 3. n-1 4. O(n2) 5.abc+*d-

6. 5 18

7.i(i+1)/2+j-1

8. 16 18 19 20 30 22

9.多路归并、I/O

并行处理初始归并段产生10.1,4,2,3 11. 3 12.非负

二、单选:1A2C3A4A5A6C7A8C9B10A11D12C13C14D15B

三、简答:

1. 按数组元素有序的一维数组一定是堆。(4分)

非升序数组一定是最小堆为例说明如下:假设非升序数组为K1, K2, …,K n,则满足K1 ≤ K2, ≤…≤ K n,则一定满足:K i≤ K2i且K i≤ K2i+1,即满足最小堆的定义。同理可知,非降序数组一定是最大堆。因此,按数组元素有序的一维数组一定是堆。(6分)

2. 二叉平衡树为48,40,80,22,45,78 (3分)

前序:48,40,22,45,80,78 (3分)

右旋转函数:void R_Rotate(BSTree &p)

{ lc=p->lchild;

p->lchild=lc->rchild;

lc->rchild=p;

p=lc;

}

四、算法

1. 1、本算法不要求将整个记录进行排序,而只进行查找第j个记录。(1)基本思想:改进划分算法,是一次划分将基准元素定位于k,如果k==j,则找到第j小的元素;否则,递归地在k的左边或右边进行划分,直到k==j 为止。

(2) 数据结构:略

(3) 算法如下:

int Search( int A[ ], int n, int j )

{

s = 1; t = n ;

k = Partition( A, s, t);

while ( k != j )

if ( k < j ) k = Partition (A, k+1,t);

else k = Partition (A, s,k-1 );

return A[j];

}

int Partition (int A[ ], int low ,int high )

{

i = low; j = high; pivot = A [ low ];

while ( i < j )

{

while ( A[j] >= pivot && i < j ) j --;

if (i < j )

A[ i++ ] = A[ j ];

while ( A[j] < pivot && i < j ) i ++;

if (i < j )

A[ j-- ] = A[ i ];

}

A[ i ] = pivot;

return i;

}

2. int visited[MAXSIZE]; //指示顶点是否在当前路径上

int exist_path_DFS(ALGraph G,int i,int j)

{

if(i==j) return 1; //i就是j

else

{ visited[i]=1;

for(p=G.vertices[i].firstarc;p;p=p->nextarc)

{

k=p->adjvex;

if(!visited[k])

return exist_path(k,j);//i下游的顶点到j有路径}//for

return 0;

}//else

}//exist_path_DFS

数据结构课程实验指导书

数据结构实验指导书 一、实验目的 《数据结构》是计算机学科一门重要的专业基础课程,也是计算机学科的一门核心课程。本课程较为系统地论述了软件设计中常用的数据结构以及相应的存储结构与实现算法,并做了相应的性能分析和比较,课程内容丰富,理论系统。本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。 由于以下原因,使得掌握这门课程具有较大的难度: 1)理论艰深,方法灵活,给学习带来困难; 2)内容丰富,涉及的知识较多,学习有一定的难度; 3)侧重于知识的实际应用,要求学生有较好的思维以及较强的分析和解决问题的能力,因而加大了学习的难度; 根据《数据结构》课程本身的特性,通过实验实践内容的训练,突出构造性思维训练的特征,目的是提高学生分析问题,组织数据及设计大型软件的能力。 课程上机实验的目的,不仅仅是验证教材和讲课的内容,检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面: (1)加深对课堂讲授内容的理解 实验是对学生的一种全面综合训练。是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,实验题中的问题比平时的习题复杂得多,也更接近实际。实验着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变" 活" ,起到深化理解和灵活掌握教学内容的目的。 不少学生在解答习题尤其是算法设计时,觉得无从下手。实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出

现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。 (2) 培养学生软件设计的综合能力 平时的练习较偏重于如何编写功能单一的" 小" 算法,而实验题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。 通过实验使学生不仅能够深化理解教学内容,进一步提高灵活运用数据结构、算法和程序设计技术的能力,而且可以在需求分析、总体结构设计、算法设计、程序设计、上机操作及程序调试等基本技能方面受到综合训练。实验着眼于原理与应用的结合点,使学生学会如何把书本上和课堂上学到的知识用于解决实际问题,从而培养计算机软件工作所需要的动手能力。 (3) 熟悉程序开发环境,学习上机调试程序一个程序从编辑,编译,连接到运行,都要在一定的外部操作环境下才能进行。所谓" 环境" 就是所用的计算机系统硬件,软件条件,只有学会使用这些环境,才能进行 程序开发工作。通过上机实验,熟练地掌握程序的开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。 完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆语法错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,尽快掌握程序调试方法是非常重要的。分析问题,选择算法,编好程序,只能说完成一半工作,另一半工作就是调试程序,运行程序并得到正确结果。 二、实验要求 常用的软件开发方法,是将软件开发过程划分为分析、设计、实现和维护四个阶段。虽然数据结构课程中的实验题目的远不如从实际问题中的复杂程度度高,但为了培养一个软件工作者所应具备的科学工作的方法和作风,也应遵循以下五个步骤来完成实验题目: 1) 问题分析和任务定义 在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么?限制条件是什么。本步骤强调的是做什么?而不是怎么做。对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。例如:输入数据的类型、值的范围以及输入的

哈工大结构力学题库一章

第一章平面体系的几何组成分析 一判断题 1. 图示体系是几何不变体系。() 题1图题2图题3图题4图 2. 图示体系为几何可变体系。() 3. 图示体系是几何不变体系。() 4. 图示体系是几何不变体系。() 5. 图示体系是几何不变体系。() 题5图题6图题19图题20图 6. 图示体系为几何不变有多余约束。() 7. 几何瞬变体系产生的运动非常微小并很快就转变成几何不变体系,因而可以用作工程结 构。() 8. 两刚片或三刚片组成几何不变体系的规则中,不仅指明了必需的约束数目,而且指明了 这些约束必需满足的条件。() 9. 在任意荷载下,仅用静力平衡方程即可确定全不反力和内力的体系是几何不变体系。 () 10. 计算自由度W小于等于零是体系几何不变的充要条件。( ) 11. 几何可变体系在任何荷载作用下都不能平衡。( ) 12. 三个刚片由三个铰相联的体系一定是静定结构。( ) 13. 有多余约束的体系一定是超静定结构。( ) 14. 有些体系为几何可变体系但却有多余约束存在。() 15. 平面几何不变体系的三个基本组成规则是可以相互沟通的。() 16. 三刚片由三个单铰或任意六根链杆两两相联,体系必为几何不变。() 17. 两刚片用汇交于一点的三根链杆相联,可组成几何不变体系。() 18. 若体系计算自由度W<0,则它一定是几何可变体系。() 19. 在图示体系中,去掉其中任意两根支座链杆后,所余下都是几何不变的。() 20. 图示体系按三刚片法则分析,三铰共线,故为几何瞬变体系。() 21. 有多余约束的体系一定是几何不变体系。()

22. 几何不变体系的计算自由度一定等于零。() 23. 几何瞬变体系的计算自由度一定等于零。() 24. 图中链杆1和2的交点O可视为虚铰。() 题24图 二选择题 1. 图示体系为:() A.几何不变无多余约束 B.几何不变有多余约束 C.几何常变 D.几何瞬变 题1图题2图题3图 2. 图示体系为:() A.几何不变无多余约束 B.几何不变有多余约束 C.几何常变 D.几何瞬变 3. 图示体系虽有三个多余约束,但为保证其几何不变,哪两根链杆是不能同时去掉的。 A.a和e B. a和b C. a和c D. c和e ()4. 图示体系是() A.无多余联系的几何不变体系 B.有多余联系的几何不变体系 C.几何可变体系 D.瞬变体系 题4图题5图题6图 5. 欲使图示体系成为无多余约束的几何不变体系,则需在A端加入:() A.固定铰支座 B.固定支座 C.滑动铰支座 D.定向支座 6. 图示体系为() A.几何不变无多余约束 B.几何不变有多余约束 C.几何常变 D.几何瞬变 7. 图示体系的几何组成为() A.几何不变无多余约束 B.几何不变有多余约束 C.瞬变体系 D.可变体系

数据结构实验2.1顺序表

附页(实验2-1代码): 头文件“DEFINE2-1.h”: #define MaxSize 10 typedef struct { char data[MaxSize]; int length; }SqList; #include #include #include"DEFINE2-1.h" void InitList(SqList * &L) //初始化线性表 { L = (SqList*)malloc(sizeof(SqList)); //分配存放线性表的空间L->length = 0; //置空线性表长度为0 } bool ListInsert(SqList *&L, int i, char e) //插入数据元素 { int j; if (i<1 || i>L->length + 1) return false; //参数错误是返回false I--; //将顺序表逻辑序号转换为物理序号for (j = L->length; j>i; j--) //将data[i]及后面元素后移一个位置L->data[j] = L->data[j - 1]; L->data[i] = e; //插入元素e L->length++; //顺序表长度+1 return true; //成功插入返回true } void DispList(SqList *L) //输出线性表L { int i; for (i = 0; ilength; i++) //扫描顺序表输出各元素值printf("%3c", L->data[i]); printf("\n\n"); } int ListLength(SqList *L) //求线性表L的长度 { return (L->length); }

哈工大结构力学题库七章

第七章 影响线 第七章影响线 判断题 图示梁AB 与A o B o ,其截面C 与C 0弯矩影响线和剪力影响线完全相同。 (X ) 图示梁K 截面的M K 影响线、Q 影响线形状如图a 、b 所示。 (K) (X) 图示梁的M C 影响线、Q C 影响线形状如图a 、b 所示。 lb ) (I 莎) <丨井1 图示梁的M C 影响线、M B 影响线形状如图a 、b 所示。 1. 2. 图示结构Q E 影响线的AC 段纵标不为零。(X ) 3. 4. 5. ■

6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 4 上f 甘兀丄 f ■ ) ___ ;_、T ■ ■ (b ) L_十=叼 (O> (X ) 图示结构M B影响线的AB段纵标为零。 图示梁跨中C截面弯矩影响线的物理意义是荷载P=1作用在截面C的弯矩图形。 用静力法作静定结构某量值的影响线与用机动法作该结构同一量值的影响线是不等价的。(X 求某量值影响线方程的方法,与恒载作用下计算该量值的方法在原理上是相同的。 影响线是用于解决活载作用下结构的计算问题,它不能用于恒载作用下的计算。 移动荷载是指大小,指向不变,作用位置不断变化的荷载,所以不是静力荷载。 用静力法作影响线,影响线方程中的变量x代表截面位置的横坐标。(X) 表示单位移动荷载作用下某指定截面的内力变化规律的图形称为内力影响线。 简支梁跨中截面弯矩的影响线与跨中有集中力P时的M图相同。(X) 简支梁跨中C截面剪力影响线在C截面处有突变。 绝对最大弯矩是移动荷载下梁的各截面上最大的弯矩。 静定结构及超静定结构的内力影响线都是由直线组成。 图示结构Q影响线的CD段为斜直线。 (X) (V) (X) (X) (V) (V) (V) 19. 图示结构K断面的剪力影响线如图b所示。(V)

哈工大2009年春季试卷-数据结构与算法-带答案

哈工大2009年春季学期数据结构与算法 试 卷一、填空题(每空2分,共20分)1. 在 情况下,等长编码是最优前缀码。2.设有两个算法在同一机器上运行,其执行时间分别为100n 2和2n ,要使前者快于后者,n 至少为 。3.采用堆排序、快速排序、冒泡排序,对初态有序的表,最省时间的是_ 。4. 设二叉树结点的先根序列为ABDECFGH ,中根序列为DEBAFCHG,则二叉树中叶结点是_________.5. 用下标从0开始的N 个元素的数组实现循环队列时,为实现下标变量m 加1后在数组有效下标范围内循环,可采用的表达式是m= 。6. 由带权为3,9,4,2,5的5个叶子结点构成一棵哈夫曼树,则带权路径长度为 。7. 对n 个记录的表进行选择排序,在最坏情况下所需要进行的关键字的比较次数为 。8. 任意一个有n 个结点的二叉树,已知它有m 个叶结点,则度数为2的结点有 。9. n 个顶点的连通图用邻接矩阵表示时,该矩阵至少有 个非零元素10. 举出两种磁带文件的分类方法: 。二、选择题(每题1分,共10 分) 注意 行为 规范 遵守 考场 纪律

1.设一组初始记录关键字序列为(45,80,55,40,42,85),则以第一个记录关键字45为基准而得到一趟快速排序的结果是( )。 (A) 40,42,45,55,80,83(B) 42,40,45,80,85,88 (C) 42,40,55,80,45,85(D) 42,40,45,85,55,80 2.数据的最小单位是( )。 (A) 数据项(B) 数据类型(C) 数据元素 (D) 数据变量 3.关键路径是AOE网中( ) 。 A.从始点到终点的最短路径 B.从始点到终点的最长路径 C.从始点到终点的边数最多的路径 D.从始点到终点的边数最少的路径 4.下列说法正确的是()。 A.最小生成树也是哈夫曼树 B.最小生成树是唯一的 C.对于n 个顶点的连通无向图,Prim算法的时间复杂性为O(n2) D.Kruskal 算法比Prim算法更适合边稠密的图 5.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的 顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是( )。 (A) 6(B) 4(C) 3(D) 2 6. 将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最 少为( )。 (A) 100 (B) 40(C) 55 (D) 80 7.若数据元素序列11,12,13,7,8,9,23,4,5是采用下列排序 方法之一得到的第二趟排序结果,则该排序算法只能是( )。 A. 插入排序 B.冒泡排序 C. 选择排序 D. 二路归并排序 8.设哈希表长m=14,哈希函数H(key)=key%11。表中已有4个结 点:addr(15)=4,addr(38)=5 , addr(61)=6 , addr(84)=7 其余地址 为空。如果用二次探测再散列处理冲突,关键字为49的结点的地址 是() A.8 B .3 C. 5 D. 9 9. 有组记录的输入顺序为(46,79,56,38,40,84),则利用堆排 序方法建立的初始堆为( ) A.79,46,56,38,40,80 B .38,40,56,79,46,84 C. 84,79,56,46,40,38 D. 84,56,79,40,46,38 10. 下列叙述中,不符合m阶B树定义要求的是()

数据结构停车场问题实验报告汇总

数据结构课程设计 ——停车场管理问题 姓名: 学号: 问题描述 设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的

车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。 二、实现要求 要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。 三、实现提示 汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。例如,(‘A',,1,5)表示1号牌照车在5这个时刻到达,而(‘ D ',,5,20)表示5号牌照车在20这个时刻离去。整个程序可以在输入信息为(‘ E ',0,0)时结束。本题可用栈和队列来实现。 四、需求分析 停车场采用栈式结构,停车场外的便道采用队列结构(即便道就是等候队列)。停车场的管理流程如 下 ①当车辆要进入停车场时,检查停车场是否已满,如果未满则车辆进栈(车辆进入停车场);如果停车场已满,则车辆进入等候队列(车辆进入便道等候)。 ②当车辆要求出栈时,该车到栈顶的那些车辆先弹出栈(在它之后进入的车辆必须先退出车场为它让路),再让该车出栈,其他车辆再按原次序进栈(进入车场)。当车辆出栈完毕后,检查等候队列(便道) 中是否有车,有车则从队列头取出一辆车压入栈中。

哈工大结构力学题库七篇(I)

第七章影响线 一判断题 1. 图示梁AB与A0B0,其截面C与C0弯矩影响线和剪力影响线完全相同。(X) 题1图题2图 2. 图示结构Q E影响线的AC段纵标不为零。(X) 3. 图示梁K截面的M K影响线、Q K影响线形状如图a、b所示。 4. 图示梁的M C影响线、Q C影响线形状如图a、b所示。 5. 图示梁的M C影响线、M B影响线形状如图a、b所示。 6. 图示结构M B影响线的AB段纵标为零。 7. 图示梁跨中C截面弯矩影响线的物理意义是荷载P=1作用在截面C的弯矩图形。(X) 8. 用静力法作静定结构某量值的影响线与用机动法作该结构同一量值的影响线是不等价 的。(X) 9. 求某量值影响线方程的方法,与恒载作用下计算该量值的方法在原理上是相同的。(√) 10. 影响线是用于解决活载作用下结构的计算问题,它不能用于恒载作用下的计算。(X) 11. 移动荷载是指大小,指向不变,作用位置不断变化的荷载,所以不是静力荷载。(X) 12. 用静力法作影响线,影响线方程中的变量x代表截面位置的横坐标。(X) 13. 表示单位移动荷载作用下某指定截面的内力变化规律的图形称为内力影响线。(√) 14. 简支梁跨中截面弯矩的影响线与跨中有集中力P时的M图相同。(X) 15. 简支梁跨中C截面剪力影响线在C截面处有突变。(√) 16. 绝对最大弯矩是移动荷载下梁的各截面上最大的弯矩。(√) 17. 静定结构及超静定结构的内力影响线都是由直线组成。(X) 18. 图示结构Q C影响线的CD段为斜直线。 19. 图示结构K断面的剪力影响线如图b所示。(√) 题19图 20. 用机动法作得图a所示Q B左结构影响线如图b。 题20图题21图 21. 图示结构a杆的内力影响线如图b所示 22. 荷载处于某一最不利位置时,按梁内各截面得弯矩值竖标画出得图形,称为简支梁的弯

哈工大数据结构大作业——哈夫曼树生成、编码、遍历

一、问题描述 1.用户输入字母及其对应的权值,生成哈夫曼树; 2.通过最优编码的算法实现,生成字母对应的最优0、1编码; 3.先序、中序、后序遍历哈夫曼树,并打印其权值。 二、方法思路 1.哈夫曼树算法的实现 §存储结构定义 #define n 100 /* 叶子树*/ #define m 2*(n) –1 /* 结点总数*/ typedef struct { /* 结点型*/ double weight ; /* 权值*/ int lchild ; /* 左孩子链*/ int rchild ; /* 右孩子链*/ int parent; /* 双亲链*/ 优点? }HTNODE ; typedef HTNODE HuffmanT[ m ] ; /* huffman树的静态三叉链表表示*/ 算法要点 1)初始化:将T[0],…T[m-1]共2n-1个结点的三个链域 均置空( -1 ),权值为0; 2)输入权值:读入n 个叶子的权值存于T的前n 个单元 T[0],…T[n], 它们是n 个独立的根结点上的权值; 3)合并:对森林中的二元树进行n-1次合并,所产生的新 结点 依次存放在T[i](n<=i<=m-1)。每次合并分两步: (1) 在当前森林中的二元树T [0],…T[i-1]所有结点中 选取权值 最小和次最小的两个根结点T[p1]和T[p2]作为合并对象,这 里0<= p1,p2<= i –1; (2) 将根为T[p1]和T[p2]的两株二元树作为左、右子树 合并为一 株新二元树,新二元树的根结点为T[i]。即 T[p1].parent =T[p2].parent = i ,T[i].lchild= p1,

哈工大数据结构线性结构及其应用

哈尔滨工业大学计算机科学与技术学院 实验报告 课程名称:数据结构 课程类型:必修 实验项目名称:线性结构及其应用 实验题目:线性结构及其应用 一、实验目的

二、实验要求及实验环境 三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系) 1.逻辑设计 2.物理设计 四、测试结果 五、系统不足与经验体会 六、附录:源代码(带注释) 一、实验目的 输入中缀表达式保存并显示,之后转换为后缀表达式,并且求出表达式的结果。 二、实验要求及实验环境 实验要求 (1)从键盘输入任意一个语法正确的(中缀)表达式,显示并保存该表达式。 (2)利用栈结构,把上述(中缀)表达式转换成后缀表达式,并显示栈的状态变化过程 和所得到的后缀表达式。 (3)利用栈结构,对上述后缀表达式进行求值,并显示栈的状态变化过程和最终结果。 实验环境 Dev-C++软件中运行 Win7系统 三、设计思想 本实验中定义了int 型,char型,struct 型,char *型,struct型

逻辑设计:应用栈后进先出的规律,在转换为后缀表达式时,

将操作运算符压入栈中,碰见更高级运算符时栈中元素出栈,继续比较;否则压栈。这样可以完成表达式的转换。在利用得到的后缀表达式计算结果时,将操作数压栈,遇见符号直接计算,这是后缀表达式的特点。 物理设计:建立一个结构体数组的栈,数组中存放运算符。数组的添加和减少都在数组末尾元素进行。可以视为一个栈。 四、测试结果 样例1. 输入1+2*(3-4/2) 输出为1+2*(3-4/2) ->此为保存并输出的中缀表达式 12342/-*+ ->此为输出后缀表达式

数据结构实验报告

数据结构实验报告 一.题目要求 1)编程实现二叉排序树,包括生成、插入,删除; 2)对二叉排序树进行先根、中根、和后根非递归遍历; 3)每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。 4)分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么? 二.解决方案 对于前三个题目要求,我们用一个程序实现代码如下 #include #include #include #include "Stack.h"//栈的头文件,没有用上 typedefintElemType; //数据类型 typedefint Status; //返回值类型 //定义二叉树结构 typedefstructBiTNode{ ElemType data; //数据域 structBiTNode *lChild, *rChild;//左右子树域 }BiTNode, *BiTree; intInsertBST(BiTree&T,int key){//插入二叉树函数 if(T==NULL) { T = (BiTree)malloc(sizeof(BiTNode)); T->data=key; T->lChild=T->rChild=NULL; return 1; } else if(keydata){ InsertBST(T->lChild,key); } else if(key>T->data){ InsertBST(T->rChild,key); } else return 0; } BiTreeCreateBST(int a[],int n){//创建二叉树函数 BiTreebst=NULL; inti=0; while(i

数据结构实验二

洛阳理工学院实验报告 系部计算机系班级学号姓名 课程名称数据结构实验日期 实验名称链表的基本操作成绩 实验目的: (1)掌握线性表的链式存储结构的特点; (2)掌握线性表的基本操作:初始化、插入、删除、查找数据元素等运算在链式存储结构上的实现。 实验条件:计算机一台,vc++6.0 实验内容与算法思想: 内容: 建立一有序的链表,实现下列操作: 1.把元素x插入表中并保持链表的有序性; 2.查找值为x的元素,若找到将其删除; 3.输出表中各元素的值。 算法思想:先创建并初始化一个顺序表(void init_linklist(LinkList)),通过循环,输入一串数据void CreateFromTail(LinkList L);创建主函数;编写算法,完成子函数(查找locate,插入insList,删除DelList,输出output)模块;调用子函数,完成实验要求 运行结果:

附:源程序: #include #include #define OK 1 #define ERROR 0 typedef char ElemType; typedef struct Node { ElemType data; struct Node* next; }Node,*LinkList; void init_linklist(LinkList *l) { *l=(LinkList)malloc(sizeof(Node)); (*l)->next=NULL; } void CreateFromTail(LinkList L) { Node *r, *s; char c; int flag =1; r=L; while(flag) { c=getchar(); if(c!='$') {

哈工大计算机组成大作业完整版

哈工大计算机组成大作业 哈工大计算机组成原理自主实验 计算机组成原理自主实验报告 第四章‐实验1 一个2114 存储芯片的实现 要求:外特性与2114 芯片一致(P77,图4.12),可以设计成为64*64 个存储单元的堆。 A0-A9:地址线 I/O:数据输入输出线 CS:片选信号 R/W:读写信号 VHDL代码: library IEEE;

use IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; entity shiyan41 is PORT(clk, we, cs,reset: in STD_LOGIC; data: inout STD_LOGIC_VECTOR(3 downto 0); adr: in STD_LOGIC_VECTOR(9 downto 0)); end shiyan41; architecture Behavioral of shiyan41 is typemem is array (63 downto 0) of STD_LOGIC_VECTOR(63 downto 0); signal data_in: STD_LOGIC_VECTOR(3 downto 0); signaldata_out: STD_LOGIC_VECTOR(3 downto 0); signalsram : mem; signalcs_s : std_logic; signalwe_s : std_logic; signaladdr_in_row: std_logic_vector(5 downto 0);

哈工大matlab期末考精彩试题精彩试题及问题详解(95分)分解

春季学期MATLAB期末作业 学院:机电工程学院 专业:机械制造设计及其自动化 学号: 班号: 姓名:

2013年春季学期 MATLAB 课程考查题 姓名: 学号: 学院:机电学院 专业:机械制造 一、必答题: 1.matlab常见的数据类型有哪些?各有什么特点? 常量:具体不变的数字 变量:会根据已知条件变化的数字 字符串:由单引号括起来的简单文本 复数:含有复数的数据 2.MATLAB中有几种帮助的途径? (1)帮助浏览器:选择view菜单中的Help菜单项或选择Help菜单中的MATLAB Help菜单项可以打开帮助浏览器; (2)help命令:在命令窗口键入“help”命令可以列出帮助主题,键入“help 函数名”可以得到指定函数的在线帮助信息; (3)lookfor命令:在命令窗口键入“lookfor 关键词”可以搜索出一系列与给定关键词相关的命令和函数 (4)模糊查询:输入命令的前几个字母,然后按Tab键,就可以列出所有以这几个字母开始的命令和函数。 注意:lookfor和模糊查询查到的不是详细信息,通常还需要在确定了具体函数名称后用help命令显示详细信息。 3.Matlab常见的哪三种程序控制结构及包括的相应的语句? 1.顺序结构:数据输入A=input(提示信息,选项) 数据输出disp(X) 数据输出fprintf(fid,format,variables) 暂停pause 或 pause(n) 2.选择结构: If语句: if expression (条件)

statements1(语句组1) else statements2(语句组2) End Switch 语句: switch expression (表达式) case value1 (表达式1) statement1(语句组1) case value2 (表达式2) statement2(语句组2) ... ... case valuem (表达式m) statementm(语句组m) otherwise statement (语句组) end 3.循环结构: For循环: for variable=expression(循环变量) statement(循环体) end While循环: while expression (条件<循环判断语句>) statement(循环体) end 4.命令文件与函数文件的主要区别是什么?

数据结构实验报告-答案

数据结构(C语言版) 实验报告

专业班级学号姓名 实验1 实验题目:单链表的插入和删除 实验目的: 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 实验要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 实验主要步骤: 1、分析、理解给出的示例程序。 2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测 试程序的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。 3、修改程序: (1)增加插入结点的功能。 (2)将建立链表的方法改为头插入法。 程序代码: #include"" #include"" #include"" #include"" typedef struct node . . 示意图:

head head head 心得体会: 本次实验使我们对链表的实质了解更加明确了,对链表的一些基本操作也更加熟练了。另外实验指导书上给出的代码是有一些问题的,这使我们认识到实验过程中不能想当然的直接编译执行,应当在阅读并完全理解代码的基础上再执行,这才是实验的意义所在。

实验2 实验题目:二叉树操作设计和实现 实验目的: 掌握二叉树的定义、性质及存储方式,各种遍历算法。 实验要求: 采用二叉树链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历 的操作,求所有叶子及结点总数的操作。 实验主要步骤: 1、分析、理解程序。 2、调试程序,设计一棵二叉树,输入完全二叉树的先序序列,用#代表虚结点(空指针), 如ABD###CE##F##,建立二叉树,求出先序、中序和后序以及按层次遍历序列,求 所有叶子及结点总数。 实验代码 #include"" #include"" #include"" #define Max 20 ertex=a; irstedge=NULL; irstedge; G->adjlist[i].firstedge=s; irstedge; R[i] 留在原位

哈工大结构力学题库三章

第三章 虚功原理和结构的位移 一 判 断 题 1. 已知P M ,Mk 图,用图乘法 求位移的结果为:(ω1у1+ω2у2)/(EI )。( ) (X ) 题1图 题2图 题3图 2. 图示结构中B 点挠度不等于零。( )(√) 3. 图示桁架中腹杆截面的大小对C 点的竖向位移影响。( )(X ) 4. 求图示A 点竖向位移可用图乘法。( ) (X ) 题4图 题5图 5. 图示梁的跨中挠度为零。( )(√) 6. 在位移互等定理中,可以建立线位移和角位移的互等关系:12δ=21?。这里12δ,21?与只是数值相等而量纲不同。( )(X ) 7. 三个刚片用不在同一直线上的三个虚铰两两相联,则所组成的体系是无多余约束的几何不变体系。( )(√) 8. 几何瞬变体系产生的运动非常微小并很快就转变成几何不变体系,因而可以用作工程结构。( )(X ) 9. 在任意荷载下,仅用静力平衡方程即可确定全部反力和内力的体系是几何不变体系。( )(√) 10. 两刚片或三刚片组成几何不变体系的规则中,不仅指明了必需的约束数目,而且指明了 这些约束必须满足的条件。( )(√) 11. 在非荷载因素(支座移动,温度变化,材料收缩等)作用下,静定结构不产生内力,但 会有位移,且位移只与杆件相对刚度有关。( )(X ) 12. 虚功中的力状态和位移状态是彼此独立无关的,这两个状态中的任一个都可看作是虚设 的。( )(√) 13. 温度改变,支座位移,材料收缩和制造误差不会使静定结构产生内力,因而也不产生位 移。( )(X ) 14. 计算自由度W 小于等于零是体系几何不变的充要条件。( )(X ) 15.若体系计算自由度W<0,则它一定是几何可变体系。( )(X )

哈工大软件工程期末复习题

软件工程复习题 一:问答题: 1.结构化系统开发方法的基本思想是什么? 结构化分析建模是根据结构化分析准则,在需求分析过程中建立的3种模型: (1)数据模型:用实体-联系图描绘数据对象及数据对象之间的关系,以建立系统的数据模型。 (2)功能模型:用数据流图描绘当数据在软件系统中移动时被变换的逻辑过程,以指名系统具有的变换数据的功能,因此,数据流图即建立系统的功能模型。 (3)行为模型:用状态转换图指名作为外部事件结果的系统行为,即状态转换图描绘了系统的各种行为模式和在不同状态间转换的方式,因此,状态转换图即建立系统的行为模型。2.名词解释:软件工程,软件危机,软件开发模型,软件测试,软件项目的质量管理,软件; 成本/效益分析,软件生命周期; 软件工程:1:将系统的,规范的,可定量的方法用到软件的开发、运行、维护之中;2对1中的方法的研究。三要素:工具、过程、方法 软件危机:在软件的开发和维护过程中遇到的一系列严重问题 软件开发模型:瀑布,快速原型,增量,螺旋,形式化方法,基于组件的开发模型 软件测试:广义:对软件生存周期内的所有检查;狭义:对软件产品的质量的检查和评价。就是找出软件的错误 软件项目的质量管理: 制定软件质量保证计划,按照质量评价体系控制软件质量要素,对阶段性的软件产品进行评审,对最终软件产品进行确认,确保软件质量。。 软件:按照特定顺序组织的计算机指令和数据的集合 成本/效益分析:通过成本效益分析来评估项目价值的方法 软件生命周期:从软件的问题定义一直到该软件被淘汰 3.什么是软件危机?软件危机的表现是什么?其产生的原因是什么? 软件危机:计算机软件在它的开发和维护过程中所遇到的一系列严重问题

数据结构实验总结报告

数据结构实验总结报告 李博杰PB10000603 一、调试过程中遇到哪些问题? (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的输入输出缓存窗口 这样一来,每写一位二进制位,就要在内部进行两次函数调用。如果将这些代码合并起来,再针对位运算进行一些优化,显然不利于代码的可读性,但对程序的执行速度将有一定提高。

哈尔滨工业大学数据结构试题及答案

数据结构试卷(一) 一、单选题(每题2 分,共20分) 1.栈和队列的共同特点是( )。 A.只允许在端点处插入和删除元素 B.都是先进后出 C.都是先进先出 D.没有共同点 2.用链接方式存储的队列,在进行插入运算时( ). A. 仅修改头指针 B. 头、尾指针都要修改 C. 仅修改尾指针 D.头、尾指针可能都要修改 3.以下数据结构中哪一个是非线性结构?( ) A. 队列 B. 栈 C. 线性表 D. 二叉树 4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在 676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。 A.688 B.678 C.692 D.696 5.树最适合用来表示( )。 A.有序数据元素 B.无序数据元素 C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据 6.二叉树的第k层的结点数最多为( ). A.2k-1 B.2K+1 C.2K-1 D. 2k-1 7.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二 分查找,则查找A[3]的比较序列的下标依次为( ) A. 1,2,3 B. 9,5,2,3 C. 9,5,3 D. 9,4,2,3 8.对n个记录的文件进行快速排序,所需要的辅助存储空间大致为 A. O(1) B. O(n) C. O(1og2n) D. O(n2) 9.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K) =K %9作为散列函数,则散列地址为1的元素有()个, A.1 B.2 C.3 D.4 10.设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。 A.5 B.6 C.7 D.8 二、填空题(每空1分,共26分) 1.通常从四个方面评价算法的质量:_________、_________、_________和_________。 2.一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为________。 3.假定一棵树的广义表表示为A(C,D(E,F,G),H(I,J)),则树中所含的结点数 为__________个,树的深度为___________,树的度为_________。 4.后缀算式9 2 3 +- 10 2 / -的值为__________。中缀算式(3+4X)-2Y/3对应的后缀算式 为_______________________________。 5.若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指 针。在这种存储结构中,n个结点的二叉树共有________个指针域,其中有________个指针域是存放了地址,有________________个指针是空指针。 6.对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点 分别有_______个和________个。 7.AOV网是一种___________________的图。 8.在一个具有n个顶点的无向完全图中,包含有________条边,在一个具有n个顶点的有 向完全图中,包含有________条边。

数据结构实验二-

实 验 报 告 一、实验目的 1) 加深对图的表示法和图的基本操作的理解,并可初步使用及操作; 2) 掌握用图对实际问题进行抽象的方法,可以解决基本的问题; 3) 掌握利用邻接表求解非负权值、单源最短路径的方法,即利用Dijkstra 算法求最短 路径,同时掌握邻接表的建立以及使用方法,能够解决相关的问题; 4) 学会使用STL 中的map 抽象实际问题,掌握map ,List,,priority_queue 等的应 用。 二、实验内容与实验步骤 (1) 实验内容: 使用图这种抽象的数据结构存储模拟的欧洲铁路路线图,通过Dijkstra 算法求出欧洲旅行最少花费的路线。该实验应用Dijkstra 算法求得任意两个城市之间的最少路费,并给出路费最少的路径的长度和所经过的城市名。 (2) 抽象数据类型及设计函数描述 1) 抽象数据类型 class City : 维护一个城市的信息,包括城市名name ,是否被访问过的标记visted ,从某个城市到达该城市所需的总费用total_fee 和总路径长度total_distance ,求得最短路径后路径中到达该城市的城市名from_city 。 class RailSystem : 用邻接表模拟欧洲铁路系统,该邻接表使用数据结构map 实现,map 的key-value 课程名称:数据结构 班级: 实验成绩: 实验名称:欧洲旅行 学号: 批阅教师签字: 实验编号:实验二 姓名: 实验日期:2013 年6 月 18 日 指导教师: 组号: 实验时间:

值对的数据类型分别为string和list<*Service>,对应出发城市名和该城市与它能 够到达的城市之间的Service链表。 class Service: 为铁路系统模拟了两个城市之间的直接路线,包括两个城市之间直接到达的费用 fee,两城市之间的直接距离distance。 部分设计函数描述 ●RailSystem(const string& filename) 构造函数,调用load_services(string const &filename)函数读取数据 ●load_services(string const &filename) 读取传入的文件中的数据并建立上述两个map以模拟欧洲铁路路线图 ●reset(void) 遍历cities图,初始化所有城市的信息:visted未访问,total_distance最大 值,total_fee费用最大值,from_city为空 ●~RailSystem(void) 析构函数,用delete将两个map中所有使用new操作符开辟的空间删除 ●void output_cheapest_route(const string& from, const string& to, ostream& out); 输出两城市间的最少费用的路径,调用calc_route(string from, string to)函 数计算最少费用 ●calc_route(string from, string to) 使用Dijkstra算法计算from和to两个城市间的最少费用的路径 (3)采用的存储结构 1)map > outgoing_services 用来保存由一个城市出发可以直接到达的城市名及这两个城市之间的路径信息。 2)list 以service为指针的list表,保存两城市间的路径。 3)map cities 用来保存所有城市信息,通过城市名查找该城市有关信息。 4)priority_queue, Cheapest> candidates 存储候选的遍历城市,City*是优先队列存储的对象类型,vector是该对象的向量集合,Cheapest是比较规则。 三、实验环境 操作系统:Windows 8 调试软件:Microsoft visual studio 2012 上机地点:综合楼311 机器台号:笔记本

相关文档
最新文档