北京航空航天大学2001年 数据结构与程序设计试题

北京航空航天大学2001年 数据结构与程序设计试题

一、问答题(本题10分)

一般情况下,线性表可以采用哪几种存储结构?请分别叙述每一种存储结构的构造原理与特点。

二、(本题10分)

已知AOE网为G=(V,E),V={v1,v2,v3,v4,v5,v6,v7,v8,V9,vl0},E={a1,a2,a3,a4,a5,a6,a7,a8,a9,al0,a11,a12,a13,a14},其中:

a1:(v1,v2)5 a2:(v1,v3)6 a3:(v2,v5)3 a4:(v3,V4)3

a5:(v3,v5)6 a6:(v4,v5)3 a7:(v4,v7)1 a8:(v4,v8)4

a9:(v5,v6)4 al0:(v5,v7)1 a11:(v6,vl0)4 a12:(v7,v9)5

a13:(v8,v9)2 a14:(v9,v10)2

注:顶点偶对右下角的数字表示边上的权值。

请按下述过程指出所有关键路径:

ee1:10:

le1:10:

e1:14:

l1:14:

其中,eei与lei分别表示事件vi的最早发生时间与最晚发生时间;ei与li分别表示活动ai的最早开始时间与最晚开始时间。

三、(本题共30分,每小题10分)

欲建立一文献库,其正文(文献本身)存放在一个双向循环链表的各个链结点中。

1.为便于链结点的插入、删除操作,以及按题目、发表日期、发表者名称、主题词(假设每文最多给出三个主题词)进行检索,请设计该链表的链结点结构(给出链结点每个域的名称,并说明该域内存放什么信息。注:以下各小题设计链结点结构也这样要求)。画出整个链表结构的示意图。

2.设计一个三级索引结构,其中第三级索引称为题目索引,是按文献题目构造的稠密索引,通过该级索引并根据给定题目可得到每个文献的存放地址;该级索引按文献学科类分类存放。第二级索引称为中类索引,是题目索引的索引,指出同一中类的文献题目索引的存放位置(例如农林类、气象类......,古代史类、近代史类......)。第一级索引称为大类索引,指出同一大类(如:自然科学类、历史类......)的文献的中类索引的存放位置。请设计每一级索引的结点结构,并画出该索引的整体示意图。

3.再设计一种三级索引结构,其中第三级索引仍是题目索引(与2题所述相同),第二级索引把具有相同主题词的文献题目索引地址组织在一个单链表中。第一级索引称为主题词索引,用文献给出的主题词作关键字组成杂凑表,即该级索引为一个杂凑表,能够指出具有同一主题词的文献题目索引的索引链表的第一个链结点的存储位置。该杂凑表采用链地址法处理冲突。请设计每一

级索引的结点结构,并画出该索引的整体示意图。

四、(本题10分)

已知非空线性链表由list指出,链结点的构造为

data link

请写一算法,将链表中数据域值最小的那个链结点移至链表的最前面。要求:不得额外申请新的链结点。

五、(本题15分,第1小题5分,第2小题10分)

已知求两个正整数m与n的最大公因子的过程用自然语言可以表述为反复执行如下动作:

第一步:若n等于零,则返回m;

第二步:若m小于n,则m与n相互交换;否则,保存m,然后将n送m,将保存的m除以n的余数送n。

1.将上述过程用递归函数表达出来(设求x除以y的余数可以用xMODy形式表示)。

2.写出求解该递归函数的非递归算法。

六、(本题10分)

函数void insert(char *s,char *t,int pos)将字符串t插入到字符串s中,插入位置为pos。请用C语言实现该函数。假设分配给字符串s的空间足够认字符串t插入。(说明:不得使用任何库函数。)

七、(本题15分) 。

命令sgrep用来在文件中查找给定字符串,并输出串所在行及行号。

命令格式为:sgrep-ifilename searchstring

其中:-i:表示查找的大小写无关,省略时表示大小写相关。

filename:给定文件名。

searchstring:所要查找的串。

用C语言实现该程序,该程序应具有一定的错误处理能力。(提示:使用命令行参数)

注意:除文件及输入/出操作可使用库函数外,其他不允许使用库函数。

相关推荐
不灭的黄金瞳12321 分钟前
C语言实现单链表
c语言·数据结构
这是程序猿2 小时前
深入剖析Java HashMap:底层原理、数据结构与核心机制全解析
java·开发语言·数据结构
HanhahnaH3 小时前
各数据结构操作的时间复杂度汇总
数据结构·算法
_wxd6663 小时前
排序-堆排序(Heap Sort)
数据结构
间歇性努力持续性发呆的野生快乐选手4 小时前
二分模板(整型,浮点型)
数据结构·c++·算法
evans在进步4 小时前
LeetCode 189 轮转数组:三次反转为什么能实现右旋?
数据结构·算法·leetcode
五_谷_丰_登6 小时前
平衡二叉搜索树讲解
数据结构·c++
星星.7226 小时前
【图论】最小生成树|Prim+Kruskal算法
数据结构·c++·算法·图论
_Narcissus_6 小时前
单调栈笔记及例题详解
数据结构·c++·笔记·算法·力扣·单调栈·洛谷