2014年9月份考试数据结构第三次作业(共7页).docx





《2014年9月份考试数据结构第三次作业(共7页).docx》由会员分享,可在线阅读,更多相关《2014年9月份考试数据结构第三次作业(共7页).docx(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上2014年9月份考试数据结构第三次作业一、填空题(本大题共10分,共 5 小题,每小题 2 分)1. 数据结构包括数据的 _ 和数据的 _ 。2. 在无头结点的单链表中,第1个结点的地址存放在头指针中,其他结点的存储地址存放在 _ 结点的next域中。3. 为了实现逐层访问,算法中使用了一个 _ ,以记忆正在访问的这一层和上一层的顶点,以便于向下一层访问。4. 在一个循环队列中,队首指针指向队首元素的 _ 位置。5. 弗洛伊德Floyd 算法的时间复杂度为 _ 。二、名词解释题(本大题共10分,共 2 小题,每小题 5 分)1. 请解释名词“头指针”2. 请解释名词“
2、目标串”三、程序阅读题(本大题共20分,共 2 小题,每小题 10 分)1. 指出下述程序段的功能是什么? void Demo2( SeqStack *S, int m) / 设DataType 为int 型SeqStack T; int i; InitStack (&T); while (! StackEmpty( S) if( i=Pop(S) !=m) Push( &T,i); while (! StackEmpty( &T) i=Pop(&T); Push(S,i); 2. 下述算法的功能是什么? LinkList Demo(LinkList L) / L 是无头结点单链表 ListN
3、ode *Q,*P; if(L&L-next) Q=L;L=L-next;P=L; while (P-next) P=P-next; P-next=Q; Q-next=NULL; return L; / Demo四、简答题(本大题共20分,共 4 小题,每小题 5 分)1. 如何判别循环队列的空和满? 2. 实际中,需根据不同的情况采用不同的哈希函数。通常,考虑的因素有那些?3. 以关键字序列(265,301,751,129,937,863,742,694,076,438)为例,写出执行直接选择排序算法的各趟排序结束时,关键字序列的状态。4. 在单链表、双链表和单循环链表中,若仅知道指针p指向
4、某结点,不知道头指针,能否将结点*p从相应的链表中删去?若可以,其时间复杂度各为多少?五、程序设计题(本大题共40分,共 4 小题,每小题 10 分)1. 编写算法,由依次输入的顶点数目、弧的数目、各顶点的信息和各条弧的信息建立有向图的邻接表。2. 编写算法,在串的定长顺序存储结构上实现串的基本操作REPLACE(&S,T,V)3. 假设以结点大小为1(且附设头结点)的链表结构表示串。试编写实现下列6种串的基本操作StrAssign,StrCopy,StrCompare,StrLength,Concat和SubString的函数。4. 设顺序表中关键字是递增有序的,试写一顺序查找算法,将哨兵设
5、在表的高下标端。然后求出等概率情况下查找成功与失败时的ASL。答案:一、填空题(10分,共 5 题,每小题 2 分)1. 参考答案:逻辑结构,存储结构解题方案:评分标准:每空2分2. 参考答案:前趋解题方案:评分标准:每空2分3. 参考答案:队列解题方案:评分标准:每空2分4. 参考答案:前一个解题方案:评分标准:每空2分5. 参考答案:O(n3)解题方案:评分标准:每空2分二、名词解释题(10分,共 2 题,每小题 5 分)1. 参考答案:头指针是一指向链表开始结点的指针(没有头结点时)。解题方案:评分标准:2. 参考答案:在串匹配运算过程中,将主串称为目标串。解题方案:评分标准:三、程序阅
6、读题(20分,共 2 题,每小题 10 分)1. 参考答案:程序段的功能是利用栈T,将一个非空栈S中值等于m的元素全部删去。解题方案:评分标准:2. 参考答案:答:该算法的功能是:将开始结点摘下链接到终端结点之后成为新的终端结点,而 原来的第二个结点成为新的开始结点,返回新链表的头指针。解题方案:答:该算法的功能是:将开始结点摘下链接到终端结点之后成为新的终端结点,而 原来的第二个结点成为新的开始结点,返回新链表的头指针。评分标准:5四、简答题(20分,共 4 题,每小题 5 分)1. 参考答案:判别循环队列的空或满不能以头尾指针是否相等来确定,一般是通过以下几种方法:一是另设一布尔变量来区别
7、队列的空和满。二是少用一个元素的空间,每次入队前测试入队后头尾指针是否会重合,如果会重合就认为队列已满。三是设置一计数器记录队列中元素总数,不仅可判别空或满,还可以得到队列中元素的个数。解题方案:评分标准:2. 参考答案:答:(1)计算哈希函数所需时间; (2)关键字的长度; 哈希表的大小; 关键字的分布情况; (5)记录的查找频率;解题方案:答:(1)计算哈希函数所需时间; (2)关键字的长度; 哈希表的大小; 关键字的分布情况; (5)记录的查找频率;评分标准:2 1 1 1 13. 参考答案:直接选择排序:(方括号为无序区) 初始态 265 301 751 129 937 863 742
8、 694 076 438 第一趟: 076 301 751 129 937 863 742 694 265 438 第二趟: 076 129 751 301 937 863 742 694 265 438 第三趟: 076 129 265 301 937 863 742 694 751 438 第四趟: 076 129 265 301 937 863 742 694 751 438 第五趟: 076 129 265 301 438 863 742 694 751 937 第六趟: 076 129 265 301 438 694 742 751 863 937 第七趟: 076 129 265
9、301 438 694 742 751 863 937 第八趟: 076 129 265 301 438 694 742 751 937 863 第九趟: 076 129 265 301 438 694 742 751 863 937 解题方案:评分标准:4. 参考答案:答:下面分别讨论三种链表的情况。 1) 单链表。若指针p指向某结点时,能够根据该指针找到其直接后继,能够顺后继指针链找到*p结点后的结点。但是由于不知道其头指针,所以无法访问到p指针指向的结点的直接前趋。因此无法删去该结点。 2) 双链表。由于这样的链表提供双向指针,根据*p结点的前趋指针和后继指针可以查找到其直接前趋和直接后
10、继,从而可以删除该结点。其时间复杂度为O(1)。 3) 单循环链表。根据已知结点位置,可以直接得到其后相邻的结点位置(直接后继),又因为是循环链表,所以我们可以通过查找,得到p结点的直接前趋。因此可以删去p所指结点。其时间复杂度应为O(n)。解题方案:答:下面分别讨论三种链表的情况。 1) 单链表。若指针p指向某结点时,能够根据该指针找到其直接后继,能够顺后继指针链找到*p结点后的结点。但是由于不知道其头指针,所以无法访问到p指针指向的结点的直接前趋。因此无法删去该结点。 2) 双链表。由于这样的链表提供双向指针,根据*p结点的前趋指针和后继指针可以查找到其直接前趋和直接后继,从而可以删除该结
11、点。其时间复杂度为O(1)。 3) 单循环链表。根据已知结点位置,可以直接得到其后相邻的结点位置(直接后继),又因为是循环链表,所以我们可以通过查找,得到p结点的直接前趋。因此可以删去p所指结点。其时间复杂度应为O(n)。评分标准:2 2 2五、程序设计题(40分,共 4 题,每小题 10 分)1. 参考答案:解:Status Build_AdjList(ALGraph &G) /输入有向图的顶点数,边数,顶点信息和边的信息建立邻接表 InitALGraph(G); scanf(%d,&v); if(vnextarc;q=q-nextarc); q-nextarc=p; p-adjvex=j;
12、p-nextarc=NULL; /while return OK; /Build_AdjList解题方案:解:Status Build_AdjList(ALGraph &G) /输入有向图的顶点数,边数,顶点信息和边的信息建立邻接表 InitALGraph(G); scanf(%d,&v); if(vnextarc); q-nextarc=p; p-adjvex=j;p-nextarc=NULL; /while return OK; /Build_AdjList评分标准:2 2 2 2 22. 参考答案:答:int String_Replace(SString &S, SString T, S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2014 月份 考试 数据结构 第三次 作业

限制150内