练习题(第1、2章) - 参考答案 (1).doc_第1页
练习题(第1、2章) - 参考答案 (1).doc_第2页
练习题(第1、2章) - 参考答案 (1).doc_第3页
练习题(第1、2章) - 参考答案 (1).doc_第4页
练习题(第1、2章) - 参考答案 (1).doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

第一、二章的练习题一、 选择题1数据结构可以用二元组来表示,它包括( A )集合K和K上的( C )集合R。A、数据元素 B、存储结构 C、元素之间的关系 D、逻辑结构2数据结构在计算机内存中的表示是指( A )。A、数据的存储结构 B、数据结构 C、数据的逻辑结构 D、数据元素之间的关系3在数据结构中,与所使用的计算机无关的是数据的( A )结构。A、逻辑 B、存储 C、逻辑和存储 D、物理4以下说法中正确的是( D )。A、数据元素是数据的最小单位 B、数据项是数据的基本单位C、数据结构是带结构的各数据项的集合 D、一些表面上很不相同的数据可以有相同的逻辑结构5线性表的顺序存储结构是一种( A )的存储结构,线性表的链式存储结构是一种( B )的存储结构。A、随机存取 B、顺序存取 C、索引存取 D、散列存取6对于一个线性,既要求能够进行较快的插入和删除,又要求存储结构能够反映数据元素之间的逻辑关系,则应该选择( B )。A、顺序存储方式 B、链式存储方式C、散列存储方式 D、索引存储方式7已知,L是一个不带头结点的单链表,p指向其中的一个结点,选择合适的语句实现在p结点的后面插入s结点的操作( B )。A、p-next=s ; s-next=p-next ; B、s-next=p-next ; p-next=s ;C、p-next=s ; s-next=p ; D、s-next=p ; p-next=s ;8单链表中各结点之间的地址( D )。该题做了修改!A、必须连续 B、部分地址必须连续C、必须不连续 D、连续与否都可以9在一个长度为n的顺序表中向第i个元素(0i1)的单链表上,设有头和尾两个指针,执行( B )操作与链表的长度有关。A、删除单链表中的第一个元素 B、删除单链表中的最后一个元素C、在单链表第一个元素前插入一个新元素D、在单链表最后一个元素后插入一个新元素12在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是( A )。A、访问第i个结点(1in)和求第i个结点的直接前驱(2in) B、在第i个结点后插入一个新结点(1in)C、删除第i个结点(1in) D、将n个结点从小到大排序13向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动( B )个元素。A、8 B、63.5 C、63 D、714单链表的存储密度( C )A、大于1; B、等于1; C、小于1; D、不能确定15、链表不具备的特点( A )。A、可随机访问任结点 B、插入删除不需要移动元素C、不必事先估计存储空间 D、所需空间与其长度成正比16、非空的单循环链表head的尾结点(由p所指向)满足( C )。A、p-NULL B、p=NULL C、p-next=head D、p=head17若某表最常用的操作是在最后一个结点之后插入一个新结点或删除最后一个结点,则采用( D )存储方式最节省时间。A、单链表 B、给出表头结点的单循环链表C、双向链表 D、带头结点的双循环链表18、在一个长度为n(n1)的单链表上,设有头和尾两个指针,执行( )操作与链表长度有关。A、删除单链表中第一个结点 B、删除单链表是最后一个结点C、在单链表第一个结点前插入一个新结点 D、在单链表最后一个结点后插入一个新结点19、设有两个长度为n的不带头结点的单链表,结点类型相同。其中,一个单链表h1是循环链表,而另一个单链表h2是非循环链表,则( B )。A、对于两个链表来说,删除第一个结点的操作,其时间复杂度都是O(1)B、对于两个链表来说,删除最后一个结点的操作,其时间复杂度都是O(n)C、循环链表要比非循环链表占用更多的内存空间D、h1和h2是不同类型的变量20、下面程序段的时间复杂度为( C )。void prime(int n) int i=2; shile(n%i!=0&isqrt(n) coutn”是一个素数!”endl; dlse coutn”是一个素数!”endl;A、O(1) B、O(n) C、O() D、O(n2)二、 填空题1线性结构中元素之间存在(1:1 )关系,树型结构中元素之间存在( 1:n )关系,图型结构中元素之间存在(m:n)关系。2一个算法的时间复杂度是该算法包含的(简单操作或原操作)的多少,一个算法的空间复杂度是指该算法在运行过程中临时占用的( 存储空间 )的大小。3当一个算法的时间复杂度与问题的n大小无关时,则表示为( o(1) );成正比时,表示为(o(n)),成平方时,则表示为(0(n2))。4顺序存储的长度为n的线性表,在任何位置上插入和删除操作的时间复杂度基本上都一样。插入一个元素大约移动表中的(n/2)个元素,删除一个元素时大约移动表中的( (n-1)/2)个元素。5在线性表的顺序存储方式中,元素之间的逻辑关系是通过(物理位置 )来体现的;在链式存储方式,元素之间的逻辑关系是通过( 指针)体现的。6对于一个长度为n的单链表,在已知的p结点后面插入一个新结点的时间复杂度为( o(1) ),在p结点之前插入一个新结点的时间复杂度为( o(n) ),在给定值为e的结点之后插入一个新结点的时间复杂度为( o(n) )。7在双向链表中,每个结点包含两个指针域,一个指向( 该结点的前驱 )结点,另一个指向( 该结点的后继 )结点。8对于循环链表来讲,逐个访问各个结点的结束判断条件是(最后一个结点的next=头指针 )。9. 在树形结构中,树根结点没有( 前驱 )结点,其余每个结点有且只有( 一个)个前驱结点;叶子结点没有( 后继 )结点,其余每个结点的后续结点数可以( 0个或多个 )。10. 在图形结构中,每个结点的前驱结点数和后续结点数可以( 0个或多个 )。三、 应用题1阅读下面程序段,计算它的时间复杂度,要求写出计算过程。 (1) for (j=1;j=n;j+) for (k=1;k=m;k+) +x; s+=x; 解:=n*m 时间复杂度:o(n*m) (2) i=s=0; while(sn) i+; s+=i; 解:假设共循环x次,则 循环次数 1 2 3 x i 1 2 3 x s +1 1+2 1+2+3 1+2+3+x 循环结束条件:(1+2+3+x)n x(x+1)/2n x22n x 时间复杂度:O() (3) i=1; while(i=n) i=i*3; 解:计算过程与上一题类似,所以省略。时间复杂度:o(log3n) (4) fact(int n) if(n=1) return 1; /语句1 else return fact(n-1)*n; /语句2 解:语句1的运行时间是o(1),语句2的运行时间是fact(n-1)的运行时间T(n-1)+乘法运行o(1)。所以 T(n)= T(n-1)+ o(1) = T(n-2)+ o(1) + o(1)= T(n-2)+ 2*o(1) . = T(1)+ (n-1)*o(1) / T(1)表示n=1时的运行时间,等于o(1) = n*o(1)= o(n)时间复杂度:o(n) (5) for (j=1;j=n;j+) for (k=1;k=j;k+) +x; s+=x; 解:=1+2+3+n=n(n+1)/2 时间复杂度:0(n2)2给定的数据结构如图所示,回答以下问题:(1)用二元组表示法给出该数据结构的逻辑结构?(2)判断属于哪一种逻辑结构?(1)二元组表示A=(K,R),其中: K=1,2,3,4,5,6 R=r r=, 逻辑结构:线性结构(一对一关系)(2)二元组表示A=(K,R),其中: K=a,b,c,d,e,f,g,h,i R=r r=, 逻辑结构:图型结构(多对多关系)提示:注意g结点的前驱和后继3对下列几种用二元组表示的数据结构,画出对应的逻辑结构图形表示,并指出属于哪一种结构。(1)A=(K,R),其中: K=a,b,c,d,e,f,g,h R=r r=,逻辑结构:顺序结构(2)B=(K,R),其中: K=1,2,3,4,5,6R=rr=(1,2),(2,3),(2,4),(3,4),(3,5),(3,6),(4,5),(4,6)逻辑结构:图型结构(3)C=(K,R),其中: K=48,25,64,57,82,36,75 R=r1,r2 r1=, r2=, 其中,实线表示关系r1,虚线表示关系r2 逻辑结构:关系r1表示线性结构,关系r2表示树型结构四、 算法题1编写有序表的插入算法,包括顺序表和单链表。顺序表:typedef structDataType dataMAXSIZE;int last;SeqList;int Insert_SeqList_sort(SeqList &L,DataType x)if(MAXSIZE=L.last+1)return -1;int i=0;while(i=L.last&L.datai=i;j-)L.dataj+1=L.dataj;L.datai=x;L.last+;return 1;链表:typedef struct NodeDataType data;struct Node *next;LNode,*LinkList;void Insert_LinkList(LinkList LDataType x)LNode *s,*p=L;while(p-next&p-next-datanext ;s=new LNode;s-data =x;s-next =p-next ;p-next =s;2编写线性表的合并算法,包括顺序表和单链表。顺序表:P22 算法2-6链表:P36 算法2-193编写删除线性表中所有值为x的元素的算法,包括顺序表和单链表。顺序表:void Delete(SeqList &L,DataType x) int i=0;while(i=L.last) if(L.datai=x) for(int k=i+1;knext!=NULL)if(p-next-data=x)q=p-next;p-next=q-next;delete q;elsep=p-next;4编写删除线性表中值相同的多余元素的算法,包括顺序表和单链表。顺序表:void Delete3(

温馨提示

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

评论

0/150

提交评论