




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构期末考试试题及答案一、选择题1 .评价一个算法时间性能的主要标准是()。A、算法易于调试B、算法易于理解C、算法的稳定性和正确性D算法的时间复杂度2 .计算机算法具备有输入、输出、()等五个特性。A、可行性、可移植性和可扩充性B、可行性、确定性和有穷性C、确定性、有穷性和稳定性D易读性、稳定性和安全性3 .带头结点的单链表head为空的判定条件是()。A head=NULLB、head->next=NULLC、head->next=headD head! =NULL4 .以下关于线性表的说法不正确的是()。A、线性表中的数据元素可以是数字、字符、记录等不同类型。B、线性表中
2、包含的数据元素个数不是任意的。C、线性表中的每个结点都有且只有一个直接前趋和直接后继。D存在这样的线性表:表中各结点都没有直接前趋和直接后继。5 .在顺序表中,只要知道(),就可在相同时间内求出任一结点的存储地址。A、基地址B、结点大小C、向量大小D>基地址和结点大小6 .()运算中,使用顺序表比链表好。A、插入B、删除C、根据序号查找D根据元素值查找)个元素7 . 一个长度为n的顺序表中,向第i个元素之前插入一个新元素时,需要向后移动(A n-iB、n-i+1C、n-i-1D i8 .()适合作为经常在首尾两端操作线性表的存储结构。A、顺序表B、单链表C、循环链表D双向链表9 .栈和队
3、列的共同点是()A、都是先进后出B、都是先进先出C、只允许在端点处插入和删除元素D没有共同点10 . 一个队列的入列序列是1 2 3 4 ,则队列的输出序列是()A 4 3 2 1B、1 2 3 4C、1 4 3 2D 3 2 4 111 .队列与一般的线性表的区别在于()。A、数据元素的类型不同B、运算是否受限制C、数据元素的个数不同D逻辑结构不同12 . “假上溢”现象会出现在()中。A、循环队列B、队列D顺序队列、填空题1 .数据的逻辑结构被分为 集合、线性结构、树形结构和图结构2 .数据的逻辑结构被分为集合、线性结构、树形结构和用状结构。3 .下面程序段的时间复杂度是 O (n) |。
4、i=s=0;while (s<n) i+;s+; 4 .树型结构和图形结构合称是非花性结构。5 .在长度为n的顺序存储线性表的第i个元素(1&i & n)之前插入一个元素时,需要向后移动n-i+1个元素6 .在一个长度为n的顺序存储的线性表中,删除第i个元素(1&i &n)时,7 .指针p指向非空循环单链表head的尾结点,则p满足p->next=head,8 .已知L是带头结点的非空单链表,且 P结点既不是第一个数据结点,也不是最后一个结点,试 的答案中选择合适的语句序列,实现删除 P结点的直接后继结点的语句序列是 J1_c P->next
5、= P->next ->next; P=P->next->next; while (P->next!=Q) P=P->next; while (P->next->next=Q) P=P->next; Q=P; Q=P->next; P=L; L=L->next; free(Q);9 .在线性结构中,第一个结点无加驱结点,其余每个结点有且只有1个前驱结点。10 .单链表是线性表的链式可储表示。11 .栈是限定仅在表尾进行插入或删除操作的线性表。12 .在栈顶指针为HS的链栈中,判定栈空的条件是 HS=NULL。13 .假设以S和X
6、分别表示进栈和退栈操作,则对输入序列 a、b、c、d、e进行一系列栈操作SS 后,得到的输出序列为bcedk14 .设栈S和队列Q的初始状态为空,元素a、b、c、d、e、f依次通过栈S, 一个元素出栈后即 若这6个元素出队列的顺序是b、d、c、f、e、a,则栈S的容量至少应该是3。三、算法填空1 .已知一个顺序表中的元素按关键字值非递减有序,下列算法删除顺序表中关键字相同的多余元 关键字不同的元素在表中只保留一个。void purge_sq(SqList &la)/删除顺序表la中关键字相同的多余元素,即使操作之后的顺序表中只保留操作之前表中所有按 不相同的元素k= -1;/k指示新表
7、的表尾for (i=0;i<La.length;+i) /顺序考察表中每个元素j=0;while (j<=k &&la.elemj!=la.elem(i)+j;| /在新表中查询是否存在和la.elemi相同的元素if (k= = -1|j>k) /k= -1表明当前考察的是第一个元素la.elem+k= la.elemi;/forla.length=k+1; / 修改表长purge_sqhea2 .一个头指针为head的单链表,其中每个结点存放一个整数,以下算法将其拆分为两个单链表 使head 1中仅含有正整数,head 2中仅含有负整数。void sepa
8、rate(LinkList &head, LinkList &head1,LinkList &head2)将头指针为head的单链表(带头结点)拆分为两个单链表head1和head2,/使head1中仅含有正整数,head2中仅含有负整数head1=(LinkList)malloc(sizeof(Lnode); head1->next=NULL;head2=(LinkList)malloc(sizeof(Lnode) ; head2->next=NULL;p=head->next;while(p) q=p->next;if(p->data&
9、gt;=0)p->next=head1->next;head1->next=p;else p->next=head2->next;head2->next=p;p=q; /whilefree(head);/seperate3 .设一个长度大于1的循环单链表中,既无头结点也无头指针,p为指向该链表中某个结点的指 一个删除该结点直接前驱结点的算法。void delete(LinkList p)/在一个既无头结点也无头指针的长度大于一的循环链表中,/删除指针p所指的某个结点的直接前驱结点q二|p; 查找p结点的前驱结点qwhile(q->next!=p)q=q
10、>next;r=q; /查找q结点的前驱结点rwhile(r->next!=q)r=r->next;r->next=p;free(q);J四、计算题1.设有头指针为head的单链表。写算法要求在链表中查找元素值等于x的结点,若找到则删除之复,直至所有值为x的元素全部删除为止;若一个也找不到则给出相应提示信息。1. void elemdelete_x(LinkList &l,ElemType x)/删除头指针为head的单链表中(带头结点)所有的值为 x的元素n=0; pre=l; /记下结点*p的前驱p=l->next;while(p) 顺序考察表中每个元
11、素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( “ Notfound x n” );/elemdelete_x2 有头指针为head的单链表,写算法在链表中查找出所有按先后顺序出现的元素x和y,并将的所有结点全部删除之。3 void delete (LinkList &head , ElemType
12、x, ElemType y)/在头指针为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->next;free(
13、q);/while/while3设某个单链表以la 为头指针,链表中每个元素均为整数且无序,写算法按递增顺序打印链表中方法是:反复找出链表中最小的元素,打印并删除之,直至表空为止。4 void rearrange(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->next;/
14、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的单链表,每个结点存放一个整数。写一算法将其按负整数在前部正整数在后部的次序存放(正整数与正整数之间、负整数与负整数之间不要求有序),存储空间仍占用原来的链表。5 huafen(LinkList &L)/L 为带头结点的单链表的头指针p=L->next
15、;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)p0=p; p=p->next;else 2 分p0->next=p->next;s=p; p=p->next;pt->next=s; s->next=NULL;pt=s;/huafen 3 分6 设有一顺序表a,写算法在表中查找先后出现的元素x和y,将x和y之间的元素逆置,逆置部分不包含x和y0若找不到相应的x和y则给出提示信息。5 void revert(ElemType &R, int s,int t)/本算法将数组R中下标自s到t的元素逆置/ 即将(R,R+i,R-i, R)改变为(R R-i,R+i,R)for (k=s;k<=(s+t)/2;k+)w=Rk;Rk=Rt-k+s;Rt-k+s=w;/for/revertvoid exchange (SqList &a,ElemType x,ElemType y)本算法实现在顺序表a中查找先后出现的元素x和y之间的元素逆置,/逆置部
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 班会春节文化课件
- 广东省建筑施工企业安全生产管理人员安全生产(安全管理)测试题及答案(附解析)
- 2025年2月新能源汽车习题库及参考答案解析
- 玩具行业人才激励计划考核试卷
- 初中语文教学设计与指导
- 稀土金属矿选矿厂生产自动化与信息集成考核试卷
- 眼科疾病诊疗与视力保护考核试卷
- 曼汉教育费用分析
- 发动机结构与维修技术考核试卷
- 肉类产品陈列与货架管理技巧考核试卷
- 陪诊可行性报告
- 专题07-对比手法(解析版)初中现代文阅读考点+答题技巧模板之记叙文
- 跨国公司的外汇风险管理分析-以TCL科技为例
- 企业防范用工风险知识讲座
- 心理健康教育课件《如何面对考试焦虑》
- 污水源热泵方案
- 完整版江苏省政府采购专家库入库考试题库(1-4套卷)
- 《唐诗中的春夏秋冬》五年级下册诗词鉴赏一等奖课件
- 围挡维修施工方案
- 智能水务一体化管理系统项目售后服务与培训方案
- 牛安全生产技术-牛常见心血管系统疾病的防治
评论
0/150
提交评论