资源描述:
《数据结构与算法 作业》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、习题11.简述下列术语:数据数据元素数据结构存储结构数据类型抽象数据类型2.在下面两列中,左侧是算法的执行时间,右侧是一些时间复杂度。请用连线的方式表示每个算法的时间复杂度。100n3(1)(a)O(1)6n2-12n+1(2)(b)O(2n)1024(3)(c)O(n)n+2log2n(4)(d)O(n2)n(n+1)(n+2)/6(5)(e)O(log2n)2n+1+100n(6)(f)O(n3)3.试编写算法,求一元多项式Pn(x)=的值Pn(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度。注意选择你认为较好的输入和输出方法,本题输入为ai(i=0,1,…,n),
2、x0和n,输出为Pn(x0)。习题21.填空题:a)在顺序表中插入和删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与插入或删除元素的位置有关。b)顺序表中逻辑上相邻的元素的物理位置要求紧邻。单链表中逻辑上相邻的元素的物理位置不要求紧邻。c)在单链表中,除了首结点外,任一结点的存储位置由前一结点的指针指示。d)在单链表中设置头结点的作用是储存指向第一个结点的指针。2.已知顺序线性表A和B中各存放一个英语单词,字母均为小写。试编写一个判定那个单词在字典中排在前面的算法。3.试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,…,an)逆置为(an,an
3、-1,…,a1)。1.已知指针ha和hb分别指向两个单链表的头结点,并且已知两个链表的长度分别为m和n。试写一算法将这两个链表连接在一起(即令其中一个表的首元结点连在另一个表的最后一个结点之后),假设指针hc指向连接后的链表的头结点,并要求算法以尽可能短的时间完成连接运算。请分析你的算法的时间复杂度。2.设线性表A=(a1,a2,…,am),B=(b1,b2,…,bn),试写一个按下列规则合并A、B为线性表C的算法,即使得C=(a1,b1,a2,b2,…,am,bm,bm+1,…,bn)当m≤n时;C=(a1,b1,a2,b2,…,an,bn,an+1,…,am)当n≤m时.线性表A
4、、B和C均以单链表作存储结构,且C表利用A表和B表中的结点空间构成。注意:单链表的长度值m和n均未显式存储。注意:2-5题完成后在上机实习时,通过程序实现检验算法的正确性(至少上机检验算法2)习题31.若按教科书3.1.1节中图3.1(b)所示铁道进行车厢调度(注意:两侧铁道均为单向行驶道),则请问:(1)如果进站的车厢序列为123,则可能得到的出站车厢序列是什么?(2)如果进站的车厢序列为123456,则能否得到435612和135426的出站序列,并说明为什么(即写出以‘S’表示进栈和以‘X’表示出栈的栈操作序列)。2.试写一个判别表达式中开、闭括号是否合法匹配的算法。3.按照四
5、则运算加、减、乘、除和幂运算(↑)优先关系的惯例,并仿照3.2节(p.54)例3-1的格式,画出下列算术表达式求值时操作数栈和运算符栈的变化过程:A-B×C/D+E↑F4.以T=16,各件物品体积={2,5,8,3,4,6}为例,画出背包问题算法执行过程中栈的变化。5.假设以带头结点的循环链表表示队列,并且只设一个指向尾结点的指针,不设头指针,写出相应的入队出队操作。习题44.1已知下列字符串 a=‘THIS’,f=‘ASAMPLE’,c=‘GOOD’,d=‘NE’,b=‘’, s=Concat(a,Concat(SubString(f,2,7),Concat(b,Sub
6、String(a,3,2)))), t=Replac(f,SubString(f,3,6),c), u=Concat(SubString(c,3,1),d),g=‘IS’, v=concat(s,Concat(b,Concat(t,Concat(b,u)))), 试问:s,t,v,StrLength(s),index(v,g),index(u,g)各是什么?4.2试问执行一下函数会产生怎样的输出结果? voiddemonstrate(){ StrAssign(s,‘THISISABOOK’); Replace(s,SubStr
7、ing(s,3,7),‘ESEARE’); StrAssign(t,Concat(s,‘S’)); StrAssign(u,‘XYXYXYXYXYXY’); StrAssign(v,SubString(u,6,3)); StrAssign(w,‘W’); printf(‘t=’,t,‘v=’,v,‘u=’,Replace(u,v,w)); }//demonstrate4.3用串的定