聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> 安全验证

安全验证

时间:2023-11-15 05:38:02    下载该word文档
2部分习题解析1绪论
1.1选择题
1.算法的时间复杂度取决于(c
A)问题的规模B待处理数据的初态CAB2.计算机算法指的是解决问题的步骤序列,它必须具备(B这三个特性。
A)可执行性、可移植性、可扩充性B可执行性、确定性、有穷性C确定性、有穷性、稳定性D易读性、稳定性、安全性5.从逻辑上可以把数据结构分为(C)两大类。
A)动态结构、静态结构B)顺序结构、链式结构C)线性结构、非线性结构D)初等结构、构造型结构6.在下面的程序段中,对x的赋值的语句频度为(C
for(i=0;ifor(j=0;jAO(2nBO(nCO(n2DO(log2n
7.下面的程序段中,n为正整数,则最后一行的语句频度在最坏情况下是(D
for(i=n-1;i>=1;i--for(j=1;j<=i;j++if(A[j]>A[j+1]A[j]A[j+1]对换;
A.OnBO(nlog2nCO(n3DO(n21.2填空题
2.对于给定的n个元素,可以构造出的逻辑结构有集合、线性结构、树形结构、图状结构或网状结构四种。4.数据结构中评价算法的两个重要指标是:算法的时间复杂度和空间复杂度。
5.数据结构是研讨数据的__逻辑结构__物理结构_以及它们之间的相互关系,并对与这种结构定义相应的_操作(运算)_设计出相应的_算法_
6.一个算法具有5个特性:有穷性_、确定性、可行性,有零个或多个输入、有一个或多个输出。9.已知如下程序段
for(i=n;i>0;i--{语句1}{x=x+1;{语句2}for(j=n;j>=i;j--{语句3}y=y+1;{语句4}}语句1执行的频度为_n+1_;语句2执行的频度为_n__;语句3执行的频度为_n(n+3/2_;语句4执行的频度为_n(n+1/2_10.在下面的程序段中,对x的赋值语句的频度为_____________(表示为n的函数)for(i=0;i>n;i++
for(j=0;j>i;j++
for(k=0;k>j;k++=+delta;【答案】1+1+2+1+2+3+…+1+2+…+n=n(n+1(n+2/6O(n311.下面程序段中带下划线的语句的执行次数的数量级是_____________i=1;while(i【答案】log2n12.计算机执行下面的语句时,语句s的执行次数为_____________
for(i=l;ifor(j=n;j>=i;j--s;【答案】(n+3(n-2/213.下面程序段的时间复杂度为_____________(n>1sum=1;for(i=0;sum【答案】O(n2线性表
2.1选择题
1.对于线性表最常用的操作是查找指定序号的元素和在末尾插入元素,则选择(A)最节省时间A)顺序表B)带头结点的双循环链表C)单链表D)带尾结点的单循环链表2.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法时间复杂度为(C(1in+1AO(0BO(1CO(nDO(n23.双向链表中有两个指针域,priornext,分别指向前驱及后继,设p指向链表中的一个结点,q指向一待插入结点,现要求在p前插入q,则正确的插入为(DAp->prior=q;q->next=p;p->prior->next=q;q->prior=p->prior;Bq->prior=p->prior;p->prior->next=q;q->next=p;p->prior=q->next;Cq->next=p;p->next=q;p->prior->next=q;q->next=p;Dp->prior->next=q;q->next=p;q->prior=p->prior;p->prior=q;4.在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是(CAO(nlog2nBO(1CO(nDO(n2
5在一个以h为头指针的单循环链中,p指针指向链尾结点的条件是(BAp->next==NULLBp->next==hCp->next->next==hDp->data==-16.对于一个具有n个结点的线性表,建立其单链表的时间复杂度是(AAO(nBO(1CO(nlog2nDO(n2
8.在双向链表存储结构中,删除p所指的结点时须修改指针(AAp->prior->next=p->nextp->next->prior=p->prior;Bp->prior=p->prior->priorp->prior->next=p;Cp->next->prior=pp->next=p->next->nextDp->next=p->prior->priorp->prior=p->next->next;9.线性表采用链式存储时,其元素地址(DA)必须是连续的B)一定是不连续的C)部分地址是连续的D)连续与否均可

·2·数据结构上机实验与习题解析

2.2填空题
1.线性表L=a1a2an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是_____________。【答案】(n-1/22.在单链表中设置头结点的作用是____________【答案】主要是使插入和删除等操作统一,在第一个元素之前插入元素和删除第一个结点不必另作判断。另外,不论链表是否为空,链表头指针不变。
3.线性表的顺序存储是通过_____________来反应元素之间的逻辑关系,而链式存储结构是通过_____________来反应元素之间的逻辑关系。【答案】(1)数据元素的前后顺序2)元素中的指针
4.当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,则采用_____________存储结构最节省时间,相反当经常进行插入和删除操作时,则采用_____________存储结构最节省时间。【答案】(1)顺序2)链式
5.对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为_____________,在给定值为x的结点后插入一个新结点的时间复杂度为_____________。【答案】(1O(12O(n7.对于双向链表,在两个结点之间插入一个新结点需修改的指针共_____4________个,单链表为_____2________个。8.循环单链表的最大优点是_____________。【答案】从任一结点出发都可访问到链表中每一个元素。9.若要在一个不带头结点的单链表的首结点*p结点之前插入一个*s结点时,可执行下列操作:s->next=_____________;p->next=s;t=p->data;p->data=_____________;s->data=_____________;【答案】(1p->next2s->data3t10.某线性表采用顺序存储结构,每个元素占据4个存储单元,首地址为100,则下标为11的(第12个)元素的存储地址为14411.带头结点的双循环链表L中只有一个元素结点的条件是_____________。【答案】L->next->next==L2.3判断题
1.取线性表的第i个元素的时间同i的大小有关()【答案】×
2.线性表的特点是每个元素都有一个前驱和一个后继()【答案】×
3顺序存储方式的优点是存储密度大,且插入、删除运算效率高()【答案】×4.线性表采用链表存储时,结点的存储空间可以是不连续的()【答案】
5.链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高()【答案】6.顺序存储方式只能用于存储线性结构()【答案】×解析】线性结构、树型结构和图状结构均可用顺序存储表示。9.顺序存储结构的主要缺点是不利于插入或删除操作()【答案】
10.顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好()【答案】×2.4程序设计题
1.设顺序表va中的数据元素递增有序。试设计一个算法,将x插入到顺序表的适当位置上,以保持该表的有序性。voidInsert_SqList(SqListva,intx/*x插入递增有序表va*/{inti;if(va.length>MAXSIZEreturn;for(i=va.length-1;va.elem[i]>x&&i>=0;i--va.elem[i+1]=va.elem[i];va.elem[i+1]=x;va.length++;}/*Insert_SqList*/2.设A=a1a2amB=b1b2bn)均为顺序表,试设计一个比较AB大小的算法(请注意:在算法中,不要破坏原表AB)。
【算法分析】比较顺序表AB,并用返回值表示结果,值为1,表示A>B;值为-1,表示A;值为0,表示A=B1)当两个顺序表可以互相比较时,若对应元素不等,则返回值为1-1
2)当两个顺序表可以互相比较的部分完全相同时,若表长也相同,则返回值为0;否则,哪个较长,哪个就较大【算法源代码】intListComp(SqListA,SqListB{for(i=1;i<=A.length&&i<=B.length;i++if(A.elem[i]!=B.elem[i]returnA.elem[i]>B.elem[i]?1:-1;if(A.length==B.lengthreturn0;returnA.length>B.length?1:-1;/*当两个顺序表可以互相比较的部分完全相同时,哪个较长,哪个就较大*/}/*ListComp*/3.已知指针hahb分别指向两个单链表的头结点,并且已知两个链表的长度分别为mn。试设计一个算法将这两个链表连接在一起(即令其中一个表的首元结点连在另一个表的最后一个结点之后),假设指针hc指向连接后的链表的头结点,并要求算法以尽可能短的时间完成连接运算。
【算法分析】1)单链表ha的头结点作为连接后的链表的头结点,即hc=ha2)查找单链表ha的最后一个结点,由指针p指向,即p->next==NULL
3)将单链表hb的首元结点(非头结点)连接在p之后,即p->next=hb->next4)回收单链表hb的头结点空间
【算法源代码】voidListConcat(LinkListha,LinkListhb,LinkList*hc/*把链表hb接在ha后面形成链表hc*/{*hc=ha;p=ha;/*由指针p指向ha的尾元结点*/p=p->next;p->next=hb->next;

免费下载 Word文档免费下载: 安全验证

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服