2019春电大数据结构形考答案_第1页
2019春电大数据结构形考答案_第2页
2019春电大数据结构形考答案_第3页
2019春电大数据结构形考答案_第4页
2019春电大数据结构形考答案_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、A 10 B18B 19B 20 D有零个或多个输出一、单项选择题1C 2D 3B 4C 5D 6C 7B 8C 911C 12D 13C 14A 15B 16C 17C二、填空题1n-i+12n-i3集合 线性结构 树形结构 图状结构4物理结构 存储结构5线性结构 非线性结构6有穷性 确定性 可形性 有零个或多个输入7图状结构8树形结构9线性结构10 n-1 O(n)11 s-next=p-next;12 head13 q-next=p-next;14 p-next=head;15单链表16顺序存储 链式存储17存储结构 18两个 直接后继 直接前驱 尾结点 头结点19头结点的指针 指向第一

2、个结点的指针20链式 链表三、问答题1简述数据的逻辑结构和存储结构的区别与联系,它们如何影响算法的设计与实现? 答:若用结点表示某个数据元素, 则结点与结点之间的逻辑关系就称为数据的逻辑结构。 数 据在计算机中的存储表示称为数据的存储结构。 可见, 数据的逻辑结构是反映数据之间的固 有关系, 而数据的存储结构是数据在计算机中的存储表示。 尽管因采用的存储结构不同, 逻 辑上相邻的结点,其物理地址未必相同, 但可通过结点的内部信息,找到其相邻的结点,从 而保留了逻辑结构的特点。 采用的存储结构不同, 对数据的操作在灵活性, 算法复杂度等方 面差别较大。2解释顺序存储结构和链式存储结构的特点,并比

3、较顺序存储结构和链式存储结构的优缺 点。答:顺序结构存储时,相邻数据元素的存放地址也相邻,即逻辑结构和存储结构是统一的, ,要 求内存中存储单元的地址必须是连续的。优点:一般情况下,存储密度大,存储空间利用率高。缺点:( 1)在做插入和删除操作时,需移动大量元素; (2)由于难以估计,必须预先分配较 大的空间,往往使存储空间不能得到充分利用;(3)表的容量难以扩充。链式结构存储时,相邻数据元素可随意存放, 所占空间分为两部分,一部分存放结点值,另 一部分存放表示结点间关系的指针。优点:插入和删除元素时很方便,使用灵活。缺点:存储密度小,存储空间利用率低。3什么情况下用顺序表比链表好? 答:顺序

4、表适于做查找这样的静态操作, 链表适于做插入和删除这样的动态操作。 如果线性表的变化长度变化不大,且其主要操作是查找,则采用顺序表; 如果线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。4解释头结点、第一个结点(或称首元结点) 、头指针这三个概念的区别?答:头结点是在链表的开始结点之前附加的一个结点; 第一个结点 (或称首元结点) 是链表中存 储第一个数据元素的结点; 头指针是指向链表中第一个结点 (或为头结点或为首元结点) 的 指针。5解释带头结点的单链表和不带头结点的单链表的区别。答:带头结点的单链表和不带头结点的单链表的区别主要体现在其结构上和算法操作上。在结构上, 带头

5、结点的单链表, 不管链表是否为空,均含有一个头结点,不带头结点的单链 表不含头结点。在操作上, 带头结点的单链表的初始化为申请一个头结点。 无论插入或删除的位置是地第一 个结点还是其他结点, 算法步骤都相同。 不带头结点的单链表, 其算法步骤要分别考虑插入 或删除的位置是第一个结点还是其他结点。因为两种情况的算法步骤不同。四、程序填空题1(1)p-data=i(2)p-next=NULL(3)q-next=p4)q=p2(1)head=p(2)q=p(3)p-next=NULL(4)p-next=q-next(5)q-next=p3(1) p=q-next(2) q-next=p-next五、

6、完成:实验 1线性表根据实验要求(见教材 P201-202)认真完成本实验,并提交实验报告。作业 2 答案本部分作业覆盖教材第 3-5 章的内容)一、单项选择题1C 2B 3A 4C 5B 6A 7B 8C 9A 10C11B 12C 13B 14B 15A 16C 17B 18A 19C 20D 21B 22D 23C 24B 25D 26A 27C 28D 29D 30C 31A 32D、填空题 1后进先出2下一个3增 1 增 14假上溢5栈是否满 s-top=MAXSIZE-1 栈顶指针 栈顶对应的数组元素 栈是否空 s-top=-1 栈顶元素 修改栈顶指针6bceda7终止条件 递归部

7、分8LU-front=LU-rear9运算符 操作数 ab+c/fde/-10 s-next=h;11 h=h-next;12 r-next=s;13 f=f-next;14字符15顺序存储方式 链式存储方式16 0 空格字符的个数17特殊 稀疏18() () 219(d,e,f) 20串长度相等且对应位置的字符相等21 i(i-1)/2+j 22行下标、列下标、非零元素值三、问答题1简述栈和一般线性表的区别。答:栈是一种先进后出的线性表, 栈的插入和删除操作都只能在栈顶进行, 而一般的线性表 可以在线性表的任何位置进行插入和删除操作。2简述队列和一般线性表的区别。队列是一种先进先出的线性表,

8、队列的插入只能在队尾进行,队列的删除只能在队头进行, 而一般的线性表可以在线性表的任何位置进行插入和删除操作。3链栈中为何不设头结点?答:因为链栈只在链头插入和删除结点, 不可能在链表中间插入和删除结点, 算法实现很简 单,所以一般不设置头结点。4利用一个栈,则:(1)如果输入序列由 A,B,C 组成,试给出全部可能的输出序列和不可能的输出序列。(2)如果输入序列由 A,B,C,D 组成,试给出全部可能的输出序列和不可能的输出序列。答:(1)栈的操作特点是后进先出,因此输出序列有:A 入, A 出, B 入, B 出, C 入 C出,输出序列为 ABC。A入, A出, B入, C入, C出,B

9、 出,输出序列为 ACB。A 入,B入,B 出,A 出,C入,C出,输出序列为BAC。A 入,B入,B 出,C 入,C出,A 出,输出序列为BCA。A 入,B入,C 入,C出,B 出,A 出,输出序列为CBA。由 A,B, C组成的数据项,除上述五个不同的组合外,还有一个C,A,B 组合。但不可能先把 C出栈,再把 A 出栈,(A 不在栈顶位置) ,最后把 B出栈,所以序列 CAB不可能由输 入序列 A,B, C 通过栈得到。(2)按照上述方法,可能的输出序列有:ABCD,ABDC,ACBD,ACDB,ADCB,BACD, BADC,BCAD,BCDA,BDCA,CBAD,CBDA, CDBA

10、,DCBA。不可能的输出序列有:DABC,ADBC,DACB, DBAC,BDAC,DBCA,DCAB,CDAB,CADB,CABD5用 S表示入栈操作, X 表示出栈操作, 若元素入栈顺序为 1234,为了得到 1342 出栈顺序, 相应的 S和 X 操作串是什么?答:应是 SXSSXSX。X各操作结果如下:S 1 入栈X 1 出栈 输出序列: 1S 2 入栈S 3 入栈X 3 出栈 输出序列: 13S 4 入栈X 4 出栈 输出序列: 134X 2 出栈 输出序列: 13426有 5 个元素,其入栈次序为: A、B、C、 D、 E,在各种可能的出栈次序中,以元素C、D最先的次序有哪几个?答

11、:从题中可知,要使 C第一个且 D第二个出栈,应是 A入栈,B入栈,C入栈, C出栈, D 入栈。之后可以有以下几种情况:1)B 出栈,A出栈,E 入栈,E出栈,输出序列为:CDBAE。2)B 出栈,E入栈,E出栈,A 出栈,输出序列为CDBEA。3)E入栈,E 出栈,B出栈,A 出栈,输出序列为CDEBA所以可能的次序有: CDBAE,CDBEA,CDEBA7写出以下运算式的后缀算术运算式 3x2+x-1/x+5 (A+B)*C-D/(E+F)+G答;对应的后缀算术运算式 3x2*x+1x/-5+ AB+C*DEF+/-G+8 简述广义表和线性表的区别和联系。答:广义表是线性表的的推广,它也

12、是n(n0)个元素 a1 ,a2 ai a的n 有限序列,其中 ai 或者是原子或者是一个广义表。所以,广义表是一种递归数据结构,而线性表没有这种特性, 线性表可以看成广义表的特殊情况,当 ai 都是原子时,广义表退化成线性表。四、程序填空题11) q-front-next=p-next;2) free(p);3) q-rear=q-front五、综合题1答:出队序列是 e2,e4,e3,e6,e5,e1 的过程: e1 入栈(栈底到栈顶元素是 e1 ) e2 入栈(栈底到栈顶元素是 e1,e2 ) e2 出栈(栈底到栈顶元素是 e1 ) e3 入栈(栈底到栈顶元素是 e1,e3 ) e4 入

13、栈(栈底到栈顶元素是 e1,e3,e4 ) e4 出栈(栈底到栈顶元素是 e1,e3 ) e3 出栈(栈底到栈顶元素是 e1 ) e5 入栈(栈底到栈顶元素是 e1,e5 ) e6 入栈(栈底到栈顶元素是 e1,e5,e6 ) e6 出栈(栈底到栈顶元素是 e1,e5 ) e5 出栈(栈底到栈顶元素是 e1 ) e1 出栈(栈底到栈顶元素是空)栈中最多时有 3 个元素,所以栈 S的容量至少是 3。2算法设计如下:/* 只有一个指针 rear 的链式队的基本操作 */#include typedef char elemtype;struct node /* 定义链队列结点 */elemtype

14、data;struct node *next;typedef struct queue /* 定义链队列数据类型 */struct node *rear; LinkQueue;void initqueue(LinkQueue *Q)/* 初始化队列 */Q=(struct queue *)malloc(sizeof(struct queue);Q-rear=NULL;void enqueue(LinkQueue *Q,elemtype x) /* 入队算法 */struct node *s,*p;s=(struct node *)malloc(sizeof(struct node);s-dat

15、a=x;if (Q-rear=NULL) /* 原为空队时 */Q-rear=s;s-next=s;else /* 原队不为空时 */p=Q-rear-next; /*p 指向第一个结点 */Q-rear-next=s; /* 将 s 链接到队尾 */Q-rear=s; /*Q-rear 指向队尾 */s-next=p;void delqueue(LinkQueue *Q) /* 出队算法 */struct node *t;if (Q-rear=NULL)printf( 队列为空 !n);return(0);else if (Q-rear-next=Q-rear) /* 只有一个结点时 */t=Q-rear;Q-rear=NULL;else /* 有多个结点时 */t=Q-rear-next; /*t 指向第一个结点 */Q-rear-next=t-next; /* 引成循环链 */free(t);elemtype gethead(LinkQueue *Q) /* 取队首元素算法 */if (Q-rear=NULL)printf( 队列为空 !n);elsereturn(Q-rear-next-data);int emptyqueue(LinkQueue *Q) /* 判断队列是否为空算法 */ if (Q-rear=NULL) return(1); /* 为空 ,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论