数据结构期末考试试题及答案_第1页
数据结构期末考试试题及答案_第2页
数据结构期末考试试题及答案_第3页
数据结构期末考试试题及答案_第4页
数据结构期末考试试题及答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、数据结构期末考试试题及答案一、选择题评价一个算法时间性能的主要标准是()。1.A、算法易于调试B、算法易于理解C、算法的稳定性和正确性D、算法的时间复杂度()等五个特性。计算机算法具备有输入、输出、2.A、可行性、可移植性和可扩充性B、可行性、确定性和有穷性C、确定性、有穷性和稳定性D、xx、稳定性和xx。带头结点的单链表head为空的判定条件是()3.A、 head=NULLB、 head->next=NULLC、 head->next=headD、 head!=NULL以下关于线性表的说法不正确的是()。4.A、线性表中的数据元素可以是数字、字符、记录等不同类型。B、线性表中包

2、含的数据元素个数不是任意的。C、线性表中的每个结点都有且只有一个直接前趋和直接后继。D、存在这样的线性表:表中各结点都没有直接前趋和直接后继。在顺序表中,只要知道(),就可在相同时间内求出任一结点的存储地址。5.A、基地址B、结点大小C、向量大小D、基地址和结点大小()运算中,使用顺序表比链表好。6.A、插入B、删除C、根据序号查找D、根据元素值查找一个长度为n的顺序表中,向第i个元素之前插入一个新元素时,需要向后移动()个元素7.A、n-iB、 n-i+1C、 n-i-1D、 i()适合作为经常在首尾两端操作线性表的存储结构。8.A、顺序表B、单链表C、循环链表D、双向链表栈和队列的共同点是

3、()9.A、都是先进后出B、都是先进先出C、只允许在端点处插入和删除元素D、没有共同点一个队列的入列序列是1234,则队列的输出序列是()。10.A、 4321B、 1234C、 1432D、 3241队列与一般的线性表的区别在于()。11.A、数据元素的类型不同B、运算是否受限制C、数据元素的个数不同D、逻辑结构不同“假上溢”现象会出现在()中。12.A、循环队列B、队列C、链队列、顺序队列D二、填空数据的逻辑结构被分集合、线性结构、树形结构和图结构数据的逻辑结构被分为集合、线性结构、树形结构和图状结构F面程序段的时间复杂度i=s=0whil(s<ni+s+;树型结构和图形结构合称是非

4、线性结构.在长度的顺序存储线性表的个元素(iWi呼n之前插入一个元素时需要向后移n-i+个元素.在一个长度的顺序存储的线性表中,删除个元素(iwi今田寸需要向前移n-个元素指指向非空循环单链hea的尾结点,满p->next=hea已是带头结点的非空单链表,结点既不是第一个数据结点,也不是最后一个结点,的答案中选择合适的语句序列,实现删结点的直接后继结点的语句序列P->nexP->nex->nextP=P->next->nextwhil(P->next!=QP=P->nextwhil(P->next->next=QP=P->nex

5、tQ=PQ=P->nextP=L L=L->next; free(Q);9 在线性结构中,第一个结点无前驱结点,其余每个结点有且只有1个前驱结点。10 单链表是线性表的链式存储表示。11 栈是限定仅在表尾进行插入或删除操作的线性表。12 在栈顶指针为HS的链栈中,判定栈空的条件是HS=NULL。13 假设以S和X分别表示进栈和退栈操作,则对输入序列a、b、c、d、e进行一系列栈操作SS后,得到的输出序列为bceda。14 设栈S和队列Q的初始状态为空,元素a、b、c、d、e、f依次通过栈S,一个元素出栈后即Q。若这6个元素出队列的顺序是b、d、c、f、e、a,则栈S的容量至少应该是

6、3。三、算法填空1 已知一个顺序表中的元素按关键字值非递减有序,下列算法删除顺序表中关键字相同的多余元关键字不同的元素在表中只保留一个。voidpurge_sq(SqList&la)/删除顺序表la中关键字相同的多余元素,即使操作之后的顺序表中只保留操作之前表中所有按不相同的元素k=-1;/k指示新表的表尾for(i=0;i<La.length;+i)/顺序考察表中每个元素j=0;while(j<=k&&la.elemj!=la.elemi)+j;/在新表中查询是否存在和la.elemi相同的元素if(k=-1|j>k)/k=-1表明当前考察的是第一个

7、元素la.elem+k=la.elemi;/forla.length=k+1;修改表长/purge_sq2 一个头指针为head的单链表,其中每个结点存放一个整数,以下算法将其拆分为两个单链表head2,使headl中仅含有正整数,head2中仅含有负整数。voidseparate(LinkList&head,LinkList&head1,LinkList&head2)/将头指针为head的单链表(带头结点)拆分为两个单链表head1和head2,/使head1中仅含有正整数,head2中仅含有负整数head1=(LinkList)malloc(sizeof(Lnode

8、);head1->next=NULL;head2=(LinkList)malloc(sizeof(Lnode);head2->next=NULL;p=head->next;while(p)q=p->next;if(p->data>=0)p->next=head1->next;head1->next=p;elsep->next=head2->next;head2->next=p;p=q;/whilefree(head);/seperat设一个长度大的循环单链表中,既无头结点也无头指针为指向该链表中某个结点的一个删除该结点直接

9、前驱结点的算法voidelete(LinkLisp/在一个既无头结点也无头指针的长度大于一的循环链表中/删除指所指的某个结点的直接前驱结q=p/查结点的前驱结while(q->next!=pq=q->nextr=q/查结点的前驱结while(r->next!=qr=r->nextr->next=pfree(q)四、计算设有头指针hea的单链表写算法要求在链表中查找元素值等的结点若找到则删除复,直至所有值的元素全部删除为止;若一个也找不到则给出相应提示信息voielemdelete_x(LinkLis&l,ElemTypx/删除头指针hea的单链表中(带头结

10、点)所有的值元n=0pre=l/记下结*的前p=l->nextwhile(p/顺序考察表中每个元while(p&&p->data!=x)pre=p;p=p->next;/在表中查询是否存在和x相同的元素if(p)/将结点p插入到新的表中pre->next=p->next;q=p;p=p->next;free(q);n+;/if/whileif(n=0)printf(“Notfno”un)d;x/elemdelete_x2有头指针为head的单链表,写算法在链表中查找出所有按先后顺序出现的元素x和y,并将x的所有结点全部删除之。2voiddel

11、ete(LinkList&head,ElemTypex,ElemTypey)/在头指针为head的单链表中查找出所有按先后顺序出现的元素x和y,/并将x和y之间的所有结点全部删除p=head->next;while(p)while(p&&p->data!=x)p=p->next;if(!p)exit(1);/没找到xr=p->next;while(r&&r->data!=y)r=r->next;if(!r)exit(1);/没找到相应的ywhile(p->next!=r)q=p-next;p->next=q

12、->next;free(q);/while/while3 设某个单链表以la为头指针,链表中每个元素均为整数且无序,写算法按递增顺序打印链表中方法是:反复找出链表中最小的元素,打印并删除之,直至表空为止。3voidrearrange(LinkList&la)/将头指针是la的单链表按递增顺序打印出来p=la->next;p1=la;while(p->next!=NULL)a=p->data;q1=p;q=p->next;while(q!=NULL)if(a>q->data)a=q->data;p1=q1;/ifq1=q;q=q->n

13、ext;/whiles=p1->next;printf(s->data);p1->next=p1->next->next;free(s);p1=la;p=la->next;/whileprintf(p->data);free(p);free(la);/rearrange4 设有一个头指针为head的单链表,每个结点存放一个整数。写一算法将其按负整数在前部正整数在后部的次序存放(正整数与正整数之间、负整数与负整数之间不要求有序),存储空间仍占用原来的链表。4huafen(LinkList&L)/L为带头结点的单链表的头指针10 / 12p=L-&

14、gt;next;while(p->next)p=p->next;pt=p;pr=p;p0=L;p=p0->next;3分while(p!=pr)if(p->data>='0'&&p->data<='9')p=p->next;p0=p;else2分p0->next=p->next;s=p;p=p->next;pt->next=s;s->next=NULL;pt=s;/huafen3分5 .设有一顺序表a,写算法在表中查找先后出现的元素x和y,将x和y之间的元素逆置,逆置部分不包含x和y。若找不到相应的x和y则给出提示信息。5voidrevert(ElemType&R,ints,intt)/本算法将数组R中下标自s到t的元素逆置/即将(RRRR改变为(RRRRst,s+1,t-S,s+1,1,-1,t,tfor(k=s;k<=(s+t)/2;k+)w=Rk;Rk=Rt-k+s;Rt-k+s=w;/for/revertvoidexchange(SqList&a,ElemTypex,ElemTypey)/本算法实现在顺序中查找先后出现的元之间

温馨提示

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

最新文档

评论

0/150

提交评论