严版数据结构前7章习题答案doc汇总.docx
- 文档编号:1438586
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:16
- 大小:144.60KB
严版数据结构前7章习题答案doc汇总.docx
《严版数据结构前7章习题答案doc汇总.docx》由会员分享,可在线阅读,更多相关《严版数据结构前7章习题答案doc汇总.docx(16页珍藏版)》请在冰豆网上搜索。
严版数据结构前7章习题答案doc汇总
第一章绪论
一.填空题
1.从逻辑关系上讲,数据结构的类型主要分为集合、线性结构、树结构和图结构。
2.数据的存储结构主要有顺序存储和链式存储两种基本方法,不论哪种存储结构,都要存储两方面的内容:
数据元素和数据元素之间的关系。
3.算法具有五个特性,分别是有穷性、确定性、可行性、输入、输出。
4.算法设计要求中的健壮性指的是算法在发生非法操作时可以作出处理的特性。
二.选择题
1.顺序存储结构中数据元素之间的逻辑关系是由C表示的,链接存储结构中的数据元素之间的逻辑关系是由D表示的。
A线性结构B非线性结构C存储位置D指针
2.假设有如下遗产继承规则:
丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。
则表示该遗产继承关系的最合适的数据结构应该是B。
A树B图C线性表D集合
3.算法指的是A。
A对特定问题求解步骤的一种描述,是指令的有限序列。
B计算机程序C解决问题的计算方法D数据处理
三.简答题
1.分析以下各程序段,并用大O记号表示其执行时间。
(1)
(2)
i=1;k=0;i=1;k=0;
While(i {{ k=k+10*i;k=k+10*i; i++;i++; }}while(i<=n) ⑴基本语句是k=k+10*i,共执行了n-2次,所以T(n)=O(n)。 ⑵基本语句是k=k+10*i,共执行了n次,所以T(n)=O(n)。 2.设有数据结构(D,R),其中D={1,2,3,4,5,6},R={(1,2),(2,3),(2,4),(3,4),(3,5),(3,6),(4,5),(4,6)}。 试画出其逻辑结构图并指出属于何种结构。 其逻辑结构图如下所示,它是一种图结构。 3.求多项式A(x)的算法可根据下列两个公式之一来设计: ⑴A(x)=anxn+an-1xn-1+…+a1x+a0 ⑵A(x)=(…(anx+an-1)x+…+a1)x)+a0 根据算法的时间复杂度分析比较这两种算法的优劣。 第二种算法的时间性能要好些。 第一种算法需执行大量的乘法运算,而第二种算法进行了优化,减少了不必要的乘法运算。 第二章线性表 一.填空题 1.在顺序表中,等概率情况下,插入和删除一个元素平均需移动表长的一半个元素,具体移动元素的个数与表长和插入的位置有关。 2.在一个长度为n的顺序表的第i(1≤i≤n+1)个元素之前插入一个元素,需向后移动 n-i+1个元素,删除第i(1≤i≤n)个元素时,需向前移动n-i个元素。 3.在单循环链表中,由rear指向表尾,在表尾插入一个结点s的操作顺序是s->next=rear->next;rear->next=s;rear=s;;删除开始结点的操作顺序为q=rear->next->next;rear->next->next=q->next;deleteq;。 二.选择题 1.数据在计算机存储器内表示时物理地址与逻辑地址相同并且是连续的,称之为: C A存储结构B逻辑结构C顺序存储结构D链式存储结构 2.在n个结点的顺序表中,算法的时间复杂度是O (1)的操作是: A A访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n) B在第i个结点后插入一个新结点(1≤i≤n) C删除第i个结点(1≤i≤n)D将n个结点从小到大排序 3.线性表L在B情况下适用于使用链式结构实现。 A需经常修改L中的结点值B需不断对L进行删除插入 CL中含有大量的结点DL中结点结构复杂 4.单链表的存储密度C A大于1B等于1C小于1D不能确定 三.判断题 1.线性表的逻辑顺序和存储顺序总是一致的。 F 2.线性表的顺序存储结构优于链接存储结构。 F 3.设p,q是指针,若p=q,则*p=*q。 F 4.线性结构的基本特征是: 每个元素有且仅有一个直接前驱和一个直接后继。 F 四.简答题 1.分析下列情况下,采用何种存储结构更好些。 (1)若线性表的总长度基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素。 (2)如果n个线性表同时并存,并且在处理过程中各表的长度会动态发生变化。 (3)描述一个城市的设计和规划。 ⑴应选用顺序存储结构。 很少进行插入和删除操作,所以空间变化不大,且需要快速存取,所以应选用顺序存储结构。 ⑵应选用链式存储结构。 链表容易实现表容量的扩充,适合表的长度动态发生变化。 ⑶应选用链式存储结构。 因为一个城市的设计和规划涉及活动很多,需要经常修改、扩充和删除各种信息,才能适应不断发展的需要。 而顺序表的插入、删除的效率低,故不合适。 五.算法设计 1.已知数组A[n]中的元素为整型,设计算法将其调整为左右两部分,左边所有元素为奇数,右边所有元素为偶数,并要求算法的时间复杂度为O(n)。 2.线性表存放在整型数组A[arrsize]的前elenum个单元中,且递增有序。 编写算法,将元素x插入到线性表的适当位置上,以保持线性表的有序性,并且分析算法的时间复杂度。 intinsert(datatypeA[],int*elenum,datatypex) /*设elenum为表的最大下标*/ {if(*elenum==arrsize-1) return0; /*表已满,无法插入*/ else{i=*elenum; while(i>=0&&A[i]>x) /*边找位置边移动*/ {A[i+1]=A[i]; i--; } A[i+1]=x; /*找到的位置是插入位的下一位*/ (*elenum)++; return1; /*插入成功*/ } } O(n) 第三章栈和队列 一.填空题 1.设有一个空栈,栈顶指针为1000H,现有输入序列为1.2.3.4.5,经过push,push,pop,push,pop,push,push后,输出序列是23,栈顶指针为1003H。 2.栈通常采用的两种存储结构是顺序栈、链栈;其判定栈空的条件分别是TOP=-1、TOP=NULL,判定栈满的条件分别是TOP=数组长度、存储空间满。 3.栈可作为实现递归函数调用的一种数据结构。 4.表达式a*(b+c)-d的后缀表达式是abc+*d-。 二.选择题 1.若一个栈的输入序列是1,2,3,…,n,输出序列的第一个元素是n,则第i个输出元素是D。 A不确定Bn-iCn-i-1Dn-i+1 2.设栈S和队列Q的初始状态为空,元素e1.e2.e3.e4.e5.e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的顺序是e2.e4.e3.e6.e5.e1,则栈S的容量至少应该是C。 A6 B4 C3 D2 3.一个栈的入栈序列是1,2,3,4,5,则栈的不可能的输出序列是C。 A54321B45321C43512D12345 三.判断题 1.有n个元素依次进栈,则出栈序列有(n-1)/2种。 F 2.栈可以作为实现过程调用的一种数据结构。 T 3.在栈满的情况下不能做进栈操作,否则将产生“上溢”。 T 4.在循环队列中,front指向队头元素的前一个位置,rear指向队尾元素的位置,则队满的条件是front=rear。 F 四.简答题 1.设有一个栈,元素进栈的次序为A,B,C,D,E,能否得到如下出栈序列,若能,请写出操作序列,若不能,请说明原因。 ⑴C,E,A,B,D ⑵C,B,A,D,E ⑴不能,因为在C、E出栈后,A一定在栈中,而且在B的下面,不可能先于B出栈 ⑵可以,设I为进栈操作,O为入栈操作,则其操作序列为IIIOOOIOIO。 2.在操作序列push (1).push (2).pop.push(5).push(7).pop.push(6)之后,栈顶元素和栈底元素分别是什么? (push(k)表示k入栈,pop表示栈顶元素出栈。 ) 栈顶元素为6,栈底元素为1。 3.在操作序列EnQueue (1).EnQueue(3).DeQueue.EnQueue(5).EnQueue(7).DeQueue.EnQueue(9)之后,队头元素和队尾元素分别是什么? (EnQueue(k)表示整数k入队,DeQueue表示队头元素出队)。 队头元素为5,队尾元素为9。 4.简述以下算法的功能(栈的元素类型SElemType为int)。 (1)statusalgo1(StackS,inte) { StackT;intd;InitStack(T); while(! StackEmpty(S)){ Pop(S,d); if(d! =e)Push(T,d); } while(! StackEmpty(T)){ Pop(T,d);Push(S,d); } }//S中如果存在e,则删除它。 (2)voidalgo2(Queue&Q) { StackS;intd;InitStack(S); while(! QueueEmpty(Q)) { DeQueue(Q,d);Push(S,d); } while(! StackEmpty(S)) { Pop(S,d);EnQueue(Q,d); } }//队列逆置 五.算法设计 1.试写一个判别表达式中开、闭括号是否配对出现的算法 BOOLBracketCorrespondency(chara[]) { inti=0; Stacks; InitStack(s); ElemTypex; while(a[i]){ switch(a[i]){ case'(': Push(s,a[i]); break; case'[': Push(s,a[i]); break; case')': GetTop(s,x); if(x=='(')Pop(s,x); elsereturnFALSE; break; case']': GetTop(s,x); if(x=='[')Pop(s,x); elsereturnFALSE; break; default: break; } i++; } if(s.size! =0)returnFALSE; returnTRUE; } 2.假设称正读和反读都相同的字符序列为“回文”,例如,‘abba’和‘abcba’是回文,‘abcde’和‘ababab’则不是回文。 试写一个算法判别读入的一个以‘@’为结束符的字符序列是否是“回文”。 StatusSymmet
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题 答案 doc 汇总