ImageVerifierCode 换一换
格式:DOCX , 页数:58 ,大小:309.62KB ,
资源ID:12479249      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12479249.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构试题及答案.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构试题及答案.docx

1、数据结构试题及答案第一章 概论一、选择题1、研究数据结构就是研究( D ).A. 数据的逻辑结构 B。 数据的存储结构 C. 数据的逻辑结构和存储结构 D. 数据的逻辑结构、存储结构及其基本操作(研究非数值计算的程序设计问题中,计算机操作对象以及他们之间的关系和操作)2、算法分析的两个主要方面是( A ). A。 空间复杂度和时间复杂度 B。 正确性和简单性 C。 可读性和文档性 D。 数据复杂性和程序复杂性3、具有线性结构的数据结构是( D )。(线性结构就是:在非空有限集合中,存在为一个被称为第一个的数据元素和最后一个元素,有除了第一个元素,集合中每一个元素均只有一个前驱,除了最后一个元素

2、有唯一后继)(链表、栈、队列、数组、串)A。 图 B。 树 C。 广义表(线性表的推广) D. 栈4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、( B )等5个特性。A。 可执行性、可移植性和可扩充性 B。 可执行性、有穷性和确定性 C。 确定性、有穷性和稳定性 D. 易读性、稳定性和确定性5、下面程序段的时间复杂度是( C )。 for(i=0;im;i+) for(j=0;j=(y+1)*(y+1)) y=y+1; A。 O(n) B. C. O(1) D. O(n2)二、填空题1、程序段“i=1;while(i=n) i=i*2;”的时间复杂度为 log2n

3、 .2、数据结构的四种基本类型中, 树形结构 的元素是一对多关系。三、综合题1、将数量级O(1),O(N),O(N2),O(N3),O(NLOG2N),O(LOG2N),O(2N)按增长率由小到大排序。答案: O(1) O(log2N) O(N) O(Nlog2N) O(N2) O(N3) O(2N) 一、填空题1. 数据结构被形式地定义为(D, R),其中D是数据元素的有限集合,R是D上的关系有限集合。2. 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容。3. 数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构。4。 线性结构中元素之间存在一对一关系,树形

4、结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。5 在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。6。 在树形结构中,树根结点没有前驱结点,其余每个结点有且只有1个前驱结点;叶子结点没有后续结点,其余每个结点的后续结点数可以任意多个。7. 在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个。8数据的存储结构可用四种基本的存储方法表示,它们分别是顺序、链式、索引、散列.9。 数据的运算最常用的有5种,它们分别是插入、删除、修改、查找、排序。10. 一个算法的效率可分为时间效率和空间效率

5、。11。 任何一个C程序都由一个主函数和若干个被调用的其它函数组成。二、单项选择题( B )1. 非线性结构是数据元素之间存在一种:A)一对多关系 B)多对多关系 C)多对一关系 D)一对一关系( C )2。 数据结构中,与所使用的计算机无关的是数据的 结构;A) 存储 B) 物理 C) 逻辑 D) 物理和存储( C )3. 算法分析的目的是:A) 找出数据结构的合理性 B) 研究算法中的输入和输出的关系C) 分析算法的效率以求改进 D) 分析算法的易懂性和文档性( A )4. 算法分析的两个主要方面5是:A) 空间复杂性和时间复杂性 B) 正确性和简明性C) 可读性和文档性 D) 数据复杂性

6、和程序复杂性( C )5. 计算机算法指的是:A) 计算方法 B) 排序方法 C) 解决问题的有限运算序列 D) 调度方法( B )6。 计算机算法必须具备输入、输出和 等5个特性。A) 可行性、可移植性和可扩充性 B) 可行性、确定性和有穷性C) 确定性、有穷性和稳定性 D) 易读性、稳定性和安全性三、简答题1。数据结构和数据类型两个概念之间有区别吗? 答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素。数据类型不仅定义了一组带结构的数据元素,而且还在其上定义了一组操作.2。 简述线性结构与非线性结构的不同点。答:线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑

7、关系是多对多的。四、分析下面各程序段的时间复杂度五、设有数据逻辑结构S=(D,R),试按各小题所给条件画出这些逻辑结构的图示,并确定其是哪种逻辑结构。 1. D=d1,d2,d3,d4 R=(d1,d2),(d2,d3),(d3,d4) 线性表2D=d1,d2,,d9 R=(d1,d2),(d1,d3),(d3,d4),(d3,d6),(d6,d8),(d4,d5), (d6,d7),(d8,d9) 树3D=d1,d2,d9 R=(d1,d3),(d1,d8),(d2,d3),(d2,d4),(d2,d5),(d3,d9), (d5,d6),(d8,d9),(d9,d7), (d4,d7),

8、(d4,d6)有向图第二章 线性表一、选择题1、若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素算法的时间复杂度( ).A. O(log2n) B。O(1) C。 O(n) D.O(n2)2、若一个线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用( )存储方式最节省时间. A。 顺序表 B. 单链表 C. 双链表 D. 单循环链表3、具有线性结构的数据结构是( )。A. 图 B. 树 C。 广义表 D。 栈4、在一个长度为n的顺序表中,在第i个元素之前插入一个新元素时,需向后移动( )个元素。A。 ni B. ni+1 C. n-i-1 D。 i5、非空的循环

9、单链表head的尾结点p满足( )。A. pnext=head B。 p-next=NULL C。 p=NULL D。 p=head6、链表不具有的特点是( )。A. 可随机访问任一元素 B。 插入删除不需要移动元素 C。 不必事先估计存储空间 D。 所需空间与线性表长度成正比7、在双向循环链表中,在p指针所指的结点后插入一个指针q所指向的新结点,修改指针的操作是( )。 A. pnext=q;q-prior=p;p-next-prior=q;qnext=q; B. p-next=q;p-nextprior=q;qprior=p;q-next=pnext; C。 qprior=p;qnext=

10、pnext;pnext-prior=q;pnext=q; D。 qnext=p-next;q-prior=p;pnext=q;pnext=q;8、线性表采用链式存储时,结点的存储地址( ).A. 必须是连续的 B. 必须是不连续的 C。 连续与否均可 D. 和头结点的存储地址相连续9、在一个长度为n的顺序表中删除第i个元素,需要向前移动( )个元素。A. ni B。 n-i+1 C. n-i-1 D. i+110、线性表是n个( )的有限序列。A。 表元素 B. 字符 C。 数据元素 D。 数据项 11、从表中任一结点出发,都能扫描整个表的是( )。A. 单链表 B. 顺序表 C. 循环链表

11、D. 静态链表12、在具有n个结点的单链表上查找值为x的元素时,其时间复杂度为( )。A. O(n) B. O(1) C。 O(n2) D. O(n1)13、线性表L=(a1,a2,an),下列说法正确的是( )。A. 每个元素都有一个直接前驱和一个直接后继 B. 线性表中至少要有一个元素C. 表中诸元素的排列顺序必须是由小到大或由大到小 D. 除第一个和最后一个元素外,其余每个元素都由一个且仅有一个直接前驱和直接后继14、一个顺序表的第一个元素的存储地址是90,每个元素的长度为2,则第6个元素的存储地址是( )。A. 98 B。 100 C. 102 D. 10615、在线性表的下列存储结构

12、中,读取元素花费的时间最少的是( )。 A。 单链表 B. 双链表 C。 循环链表 D。 顺序表16、在一个单链表中,若删除p所指向结点的后续结点,则执行( ).A. pnext=p-next-next;B. p=p-next;p-next=p-next-next;C。 p =pnext;D。 p=p-nextnext;17、将长度为n的单链表连接在长度为m的单链表之后的算法的时间复杂度为( )。A. O(1) B. O(n) C. O(m) D。 O(m+n)18、线性表的顺序存储结构是一种( )存储结构。A. 随机存取 B. 顺序存取 C. 索引存取 D. 散列存取 19、顺序表中,插入一

13、个元素所需移动的元素平均数是( )。 A。 (n1)/2 B. n C. n+1 D。 (n+1)/210、循环链表的主要优点是( )。A。 不再需要头指针 B。 已知某结点位置后能容易找到其直接前驱 C。 在进行插入、删除运算时能保证链表不断开 D。 在表中任一结点出发都能扫描整个链表 11、不带头结点的单链表head为空的判定条件是( )。A。 head=NULL B。 headnext=NULL C。 headnext=head D。 head!=NULL12、在下列对顺序表进行的操作中,算法时间复杂度为O(1)的是( ). A. 访问第i个元素的前驱(1next=snext;snext

14、=p; B。 s-next=p;qnext=snext; C. pnext=s-next;s-next=q; D。 snext=q;p-next=s-next;14、在以下的叙述中,正确的是( )。 A。 线性表的顺序存储结构优于链表存储结构 B。 线性表的顺序存储结构适用于频繁插入/删除数据元素的情况 C. 线性表的链表存储结构适用于频繁插入/删除数据元素的情况 D. 线性表的链表存储结构优于顺序存储结构15、在表长为n的顺序表中,当在任何位置删除一个元素的概率相同时,删除一个元素所需移动的平均个数为( ).A. (n1)/2 B. n/2 C。 (n+1)/2 D。 n16、在一个单链表中

15、,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入一个结点s,则执行( ).A。 s-next=p-next; p-next=s; B。 p-next=snext;snext=p; C。 q-next=s;s-next=p; D. pnext=s;s-next=q; 17、在单链表中,指针p指向元素为x的结点,实现删除x的后继的语句是( )。A。 p=pnext; B. p-next=p-nextnext; C。 p-next=p; D. p=p-next-next;18、在头指针为head且表长大于1的单循环链表中,指针p指向表中某个结点,若p-next-next=head,则( )

16、.A。 p指向头结点 B. p指向尾结点 C. p的直接后继是头结点 D。 p的直接后继是尾结点二、填空题1、设单链表的结点结构为(data,next)。已知指针p指向单链表中的结点,q指向新结点,欲将q插入到p结点之后,则需要执行的语句: q-next=pnext,pnext=q 。答案:q-next=pnext pnext=q2、线性表的逻辑结构是 线性结构 ,其所含元素的个数称为线性表的 长度 。答案:线性结构 长度3、写出带头结点的双向循环链表L为空表的条件 Lprior=Lnext=L .答案:L-prior=Lnext=L4、带头结点的单链表head为空的条件是 headnext=

17、null 。答案:headnext=NULL5、在一个单链表中删除p所指结点的后继结点时,应执行以下操作:q = p-next;pnext=_qnext _;答案:q-next 三、判断题1、单链表不是一种随机存储结构。 2、在具有头结点的单链表中,头指针指向链表的第一个数据结点(的存储位置)。3、用循环单链表表示的链队列中,可以不设队头指针,仅在队尾设置队尾指针。4、顺序存储方式只能用于存储线性结构.5、在线性表的顺序存储结构中,逻辑上相邻的两个元素但是在物理位置上不一定是相邻的。6、链式存储的线性表可以随机存取。 四、程序分析填空题1、函数GetElem实现返回单链表的第i个元素,请在空格

18、处将算法补充完整。 int GetElem(LinkList L,int i,Elemtype e) LinkList p;int j;p=Lnext;j=1; while(pji) p=pnext (1) ;+j;if(!p|ji) return ERROR;e= pdata (2) ;return OK;答案:(1)p=pnext (2)p-data2、函数实现单链表的插入算法,请在空格处将算法补充完整。int ListInsert(LinkList L,int i,ElemType e) LNode *p,*s;int j; p=L;j=0; while((p!=NULL)(jnext=

19、s3、函数ListDelete_sq实现顺序表删除算法,请在空格处将算法补充完整.int ListDelete_sq(Sqlist L,int i) int k; if(i1|iLlength) return ERROR;for(k=i1;kL-length-1;k+) L-slistk= L-slistk+1 (1) ; (2) L-Length ; return OK;答案:(1)Lslistk+1 (2) -L-Length 4、函数实现单链表的删除算法,请在空格处将算法补充完整.int ListDelete(LinkList L,int i,ElemType s) LNode p,*q

20、; int j; p=L;j=0; while(( p-next!=null (1) )&(ji-1)) p=pnext;j+; if(pnext=NULL|ji1) return ERROR; q=p-next; p-next=qnext (2) ; *s=qdata; free(q); return OK;/*listDelete/答案:(1)p-next!=NULL (2)pnext=qnext5、写出算法的功能。int L(head) node head; int n=0; node p; p=head; while(p!=NULL) p=pnext; n+; return(n); 答

21、案:求单链表head的长度五、综合题1、编写算法,实现带头结点单链表的逆置算法。答案:void invent(Lnode *head) Lnode *p,q; if(!head-next) return ERROR; p=head-next; q=p-next; pnext =NULL; while(q) p=q; q=qnext; p-next=head-next; headnext=p; 2、有两个循环链表,链头指针分别为L1和L2,要求写出算法将L2链表链到L1链表之后,且连接后仍保持循环链表形式。答案:void merge(Lnode L1, Lnode L2) Lnode p,*q

22、; while(p-next!=L1)p=pnext;while(q-next!=L2)q=q-next;q-next=L1; pnext =L2; 3、设一个带头结点的单向链表的头指针为head,设计算法,将链表的记录,按照data域的值递增排序。答案:void assending(Lnode head) Lnode p,q , *r, s; p=head-next; q=pnext; p-next=NULL; while(q)r=q; q=q-next;if(r-data=p-data) r-next=p; head-next=r; p=r; elsewhile(!p r-datapdat

23、a)s=p; p=pnext; r-next=p; s-next=r;p=head-next; 4、编写算法,将一个头指针为head不带头结点的单链表改造为一个单向循环链表,并分析算法的时间复杂度.答案:void linklist_c(Lnode *head) Lnode *p; p=head; if(!p) return ERROR;while(pnext!=NULL)p=pnext;pnext=head; 设单链表的长度(数据结点数)为N,则该算法的时间主要花费在查找链表最后一个结点上(算法中的while循环),所以该算法的时间复杂度为O(N)。5、已知head为带头结点的单循环链表的头指

24、针,链表中的数据元素依次为(a1,a2,a3,a4,,an),A为指向空的顺序表的指针.阅读以下程序段,并回答问题:(1)写出执行下列程序段后的顺序表A中的数据元素;(2)简要叙述该程序段的功能。if(head-next!=head)p=head-next;A-length=0;while(p-next!=head)p=p-next;AdataA-length +=pdata;if(p-next!=head)p=p-next;答案: (1) (a2, a4, , ) (2)将循环单链表中偶数结点位置的元素值写入顺序表A6、设顺序表va中的数据元数递增有序.试写一算法,将x插入到顺序表的适当位置

25、上,以保持该表的有序性。答案:void Insert_sq(Sqlist va, ElemType x) int i, j, n; n=length(va); if(x=vai)van=x;elsei=0;while(xvai) i+;for(j=n1;j=I;j-)vaj+1=vaj;vai=x; n+; 7、假设线性表采用顺序存储结构,表中元素值为整型。阅读算法f2,设顺序表L=(3,7,3,2,1,1,8,7,3),写出执行算法f2后的线性表L的数据元素,并描述该算法的功能。 void f2(SeqList *L) int i,j,k;k=0;for(i=0;iLlength;i+) for(j=0;jk & Ldatai!=L-dataj;j

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1