数据结构本科形成性考核册答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作业1
一、单项选择题
1.C 2.D 3.B 4.C 5.D 6.C 7.B 8.C 9.A 10.B
11.C 12.D 13.C 14.A 15.B 16.C 17.C 18.B 19.B 20.D
二、填空题
1.n-i+1
2.n-i
3.集合线性结构树形结构图状结构
4.物理结构存储结构
5.线性结构非线性结构
6.有穷性确定性可形性有零个或多个输入有零个或多个输出
7.图状结构
8.树形结构
9.线性结构
10.n-1 O(n)
11.s->next=p->next;
12.head
13.q->next=p->next;
14.p->next=head;
15.单链表
16.顺序存储链式存储
17.存储结构
18.两个直接后继直接前驱尾结点头结点
19.头结点的指针指向第一个结点的指针
20.链式链表
三、问答题
1.简述数据的逻辑结构和存储结构的区别与联系,它们如何影响算法的设计与实现?
答:若用结点表示某个数据元素,则结点与结点之间的逻辑关系就称为数据的逻辑结构。数据在计算机中的存储表示称为数据的存储结构。可见,数据的逻辑结构是反映数据之间的固有关系,而数据的存储结构是数据在计算机中的存储表示。尽管因采用的存储结构不同,逻辑上相邻的结点,其物理地址未必相同,但可通过结点的内部信息,找到其相邻的结点,从而保留了逻辑结构的特点。采用的存储结构不同,对数据的操作在灵活性,算法复杂度等方面差别较大。
2.解释顺序存储结构和链式存储结构的特点,并比较顺序存储结构和链式存储结构的优缺点。
答:
顺序结构存储时,相邻数据元素的存放地址也相邻,即逻辑结构和存储结构是统一的,,要求内存中存储单元的地址必须是连续的。
优点:一般情况下,存储密度大,存储空间利用率高。
缺点:(1)在做插入和删除操作时,需移动大量元素;(2)由于难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分利用;(3)表的容量难以扩充。
链式结构存储时,相邻数据元素可随意存放,所占空间分为两部分,一部分存放结点值,另一部分存放表示结点间关系的指针。
优点:插入和删除元素时很方便,使用灵活。
3.什么情况下用顺序表比链表好?
答:顺序表适于做查找这样的静态操作,链表适于做插入和删除这样的动态操作。如果线性表的变化长度变化不大,且其主要操作是查找,则采用顺序表;如果线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。
4.解释头结点、第一个结点(或称首元结点)、头指针这三个概念的区别?
答:
头结点是在链表的开始结点之前附加的一个结点;第一个结点(或称首元结点)是链表中存储第一个数据元素的结点;头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针。
5.解释带头结点的单链表和不带头结点的单链表的区别。
答:
带头结点的单链表和不带头结点的单链表的区别主要体现在其结构上和算法操作上。
在结构上,带头结点的单链表,不管链表是否为空,均含有一个头结点,不带头结点的单链表不含头结点。在操作上,带头结点的单链表的初始化为申请一个头结点。无论插入或删除的位置是地第一个结点还是其他结点,算法步骤都相同。不带头结点的单链表,其算法步骤要分别考虑插入或删除的位置是第一个结点还是其他结点。因为两种情况的算法步骤不同。
四、程序填空题
1.
(1)p->data=i
(2)p->next=NULL
(3)q->next=p
(4)q=p
2.
(1)head=p
(2)q=p
(3)p->next=NULL
(4)p->next=q->next
(5)q->next=p
3.
(1)p=q->next
(2)q->next=p->next
作业2
一、单选
CBAAC AACCC BCBBC CBAAD BAABD ACDCA D
二、填空
1、堆栈
2、加1
3、rear值+1 fear值+1
5、队列是否已满sq->==MaxSize 尾指针的值尾指针指向的数据单元
队列是否为空sq->==sq->front 队头指针加1 返回front所指位置的元素。
6、bceda
7、终止条件递归条件
8、LU->rear==Lu-front
9、??ab+c/fdc/--
10、s-next=h;
11、h=h->next;
12、r->next=s;
13、f=f->next;
14、字符
15、顺序存储链接存储
16、0 1
17、特殊稀疏
18、() (()) 2
19、((d,e,f))
20、两串的长度相等,且对应位置上的字符相同。
21、i(i-1)/2+j
22、行号列号元素值
三、简答
1、一般线性表使用数组来表示的,线性表一般有插入、删除、读取等对于任意元素的操作。
而栈只是一种特殊的线性表,栈只能在线性表的一端插入(称为入栈,push)或者读取栈顶
元素或者称为“弹出、出栈”(pop)。栈在数组的基础上可以用一个指向栈顶的标识符来表
示,如a表示栈,则a[top]就表示栈顶元素。
2、队列是一种运算受限的线性表,它的运算限制与栈不同,是两头都有限制,
插入只能在表的一端进行(只进不出),而删除只能在表的另一端进行(只出不进)。
而一般线性表是用数组来表示的,线性表一般有插入、删除、读取等对于任意元素的操作。
3、如果你的栈有头结点且头结点不存储有效数据,且sq指向栈顶的有效数据,那么
sq->next == NULL表示栈空。
如果你的栈有头结点且头结点存储有效数据,且sq指向栈顶的有效数据,那么
sq==NULL表示栈空。
4、(1)CBA,ABC,BAC,BCA,ACB 可根据栈的特点"后进先出"来的出结果,不可能的是:CAB
(2)可能的输出序列:ABCD, ABDC, ACBD, ACDB ,ADCB ,BACD ,BADC ,BCAD ,BCDA ,BDCA CBAD, CBDA, CDBA, DCBA,共14种
不可能的输出序列:ADBC,BDAC,CDAB, CABD, CADB,DCAB, DABC, DACB ,DBCA ,DBAC共10种。
5、SXSSXSXX
6、以元素C开头的有:CBADE CBAED CBDAE CBDEA CDBAE CDBEA CDEBA CEDBA 以元素D开头的有:DCBAE DCEBA DCBEA DECBA
7、第一个有问题3x2x+1x/-5+ AB+C*DEF+/-G+
8、一般线性表使用数组来表示的,线性表一般有插入、删除、读取等对于任意元素的操作。
广义表是线性表的推广,也称为列表,也是一种线性结构;
任何一个非空表,表头可能是原子,也可能是列表;但表尾一定是列表.
广义表中元素既可以是原子类型,也可以是列表;
当每个元素都为原子且类型相同时,就是线性表.
四、1、这个题目拿不准