2022年太原理工大学数据结构试题库及答案 .pdf





《2022年太原理工大学数据结构试题库及答案 .pdf》由会员分享,可在线阅读,更多相关《2022年太原理工大学数据结构试题库及答案 .pdf(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学而不思则惘,思而不学则殆数据结构试题库及答案第一章 概论一、选择题1、研究数据结构就是研究( D ) 。A. 数据的逻辑结构B. 数据的存储结构C. 数据的逻辑结构和存储结构D. 数据的逻辑结构、存储结构及其基本操作2、算法分析的两个主要方面是( A ) 。 A. 空间复杂度和时间复杂度B. 正确性和简单性 C. 可读性和文档性 D. 数据复杂性和程序复杂性3、具有线性结构的数据结构是( D ) 。A. 图B. 树C. 广义表D. 栈6、算法是( D ) 。A. 计算机程序B. 解决问题的计算方法C. 排序算法D. 解决问题的有限运算序列7、某算法的语句执行频度为(3n+nlog2n+n2+
2、8), 其时间复杂度表示( C ) 。A. O(n) B. O(nlog2n) C. O(n2) D. O(log2n) 11 、抽象数据类型的三个组成部分分别为( A ) 。A. 数据对象、数据关系和基本操作B. 数 据 元 素 、 逻 辑 结 构 和 存 储 结 构C. 数据项、数据元素和数据类型D. 数据元素、数据结构和数据类型二、填空题三、综合题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.
3、数据结构被形式地定义为(D, R ) ,其中 D 是数据元素的有限集合, R 是 D 上的关系有限集合。2. 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容。3. 数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构。8数据的存储结构可用四种基本的存储方法表示,它们分别是顺序、链式、索引、精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 37 页学而不思则惘,思而不学则殆散列。9. 数据的运算最常用的有5 种,它们分别是插入、删除、修改、查找、排序。二、单项选择题(C)2. 数据结构中,与所使用的计算机无
4、关的是数据的结构;A) 存储B) 物理C) 逻辑D) 物理和存储三、简答题1.数据结构和数据类型两个概念之间有区别吗?答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素。数据类型不仅定义了一组带结构的数据元素,而且还在其上定义了一组操作。2. 简述线性结构与非线性结构的不同点。答:线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是多对多的。四、分析下面各程序段的时间复杂度Mn nn nn log3n 五、设有数据逻辑结构S=(D,R) ,试按各小题所给条件画出这些逻辑结构的图示,并确定其是哪种逻辑结构。1. D=d1,d2,d3,d4 R=(d1,d2),(d
5、2,d3),(d3,d4) 2. s=0; for (i=0; in; i+) for(j=0; jn; j+) s+=Bij; sum=s; 1. for (i=0; in; i+) for (j=0; jm; j+) Aij=0;3. x=0; for(i=1; in; i+) for (j=1; j=n-i; j+) x+; 4. i=1; while(inext=q;q-prior=p;p-next-prior=q;q-next=q; B. p-next=q;p-next-prior=q;q-prior=p;q-next=p-next; C. q-prior=p;q-next=p-ne
6、xt;p-next-prior=q;p-next=q; D. q-next=p-next;q-prior=p;p-next=q;p-next=q; 10 、线性表是 n个()的有限序列。A. 表元素B. 字符C. 数据元素D. 数据项11 、从表中任一结点出发,都能扫描整个表的是() 。A. 单链表B. 顺序表C. 循环链表 D. 静态链表12 、在具有 n个结点的单链表上查找值为x的元素时,其时间复杂度为() 。A. O(n) B. O(1) C. O(n2) D. O(n-1) 15 、在线性表的下列存储结构中,读取元素花费的时间最少的是() 。 A. 单链表B. 双链表 C. 循环链表D
7、. 顺序表16 、在一个单链表中,若删除p所指向结点的后续结点,则执行() 。A. p-next=p-next-next; B. p=p-next;p-next=p-next-next; C. p =p-next; D. p=p-next-next; 17 、将长度为 n的单链表连接在长度为m的单链表之后的算法的时间复杂度为() 。A. O(1) B. O(n) C. O(m) D. O(m+n) 18 、线性表的顺序存储结构是一种( a )存储结构。 N A. 随机存取B. 顺序存取C. 索引存取D. 散列存取19 、顺序表中,插入一个元素所需移动的元素平均数是() 。 A. (n-1)/2
8、 B. n C. n+1 D. (n+1)/211 、不带头结点的单链表head 为空的判定条件是( b ) 。A. head=NULL B. head-next=NULL 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 37 页学而不思则惘,思而不学则殆C. head-next=head D. head!=NULL 12 、在下列对顺序表进行的操作中,算法时间复杂度为O(1) 的是() 。A. 访问第 i个元素的前驱(1next=s-next;s-next=p;B. s-next=p;q-next=s-next;C. p-next=s
9、-next;s-next=q;D. s-next=q;p-next=s-next;15、在表长为n 的顺序表中, 当在任何位置删除一个元素的概率相同时,删除一个元素所需移动的平均个数为( a ) 。A. (n-1)/2 B. n/2 C. (n+1)/2 D. n 二、填空题1、 设单链表的结点结构为(data,next) 。 已知指针 p指向单链表中的结点,q指向新结点,欲将 q插入到 p结点之后,则需要执行的语句:;。答案:q-next=p-next p-next=q3、写出带头结点的双向循环链表L 为空表的条件。答案: L-prior=L-next=L5、在一个单链表中删除p所指结点的后
10、继结点时,应执行以下操作:q = p-next; p-next=_ q-next _; 三、判断题3、用循环单链表表示的链队列中,可以不设队头指针,仅在队尾设置队尾指针。x4、顺序存储方式只能用于存储线性结构。5、在线性表的顺序存储结构中,逻辑上相邻的两个元素但是在物理位置上不一定是相邻的。6、链式存储的线性表可以随机存取。四、程序分析填空题1、函数 GetElem实现返回单链表的第i 个元素,请在空格处将算法补充完整。int GetElem(LinkList L,int i,Elemtype *e) LinkList p;int j;p=L-next;j=1; while(p&jnext ;
11、+j; if(!p|ji) return ERROR; *e= p-data ; return OK; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 37 页学而不思则惘,思而不学则殆2、函数实现单链表的插入算法,请在空格处将算法补充完整。int ListInsert(LinkList L,int i,ElemType e) LNode *p,*s;int j; p=L;j=0; while(p!=NULL)&(jnext;j+; if(p=NULL|ji-1) return ERROR; s=(LNode *)malloc(size
12、of(LNode); s-data=e; s-next=p-next ; p-next=s ; return OK; /*ListInsert*/ 3、函数 ListDelete_sq实现顺序表删除算法,请在空格处将算法补充完整。int ListDelete_sq(Sqlist *L,int i) int k; if(iL-length) return ERROR; for(k=i-1;klength-1;k+) L-slistk= L-slistk+1 ; -L-Length ; return OK; 4、函数实现单链表的删除算法,请在空格处将算法补充完整。int ListDelete(Li
13、nkList L,int i,ElemType *s) LNode *p,*q; int j; p=L;j=0; while( p-next!=NULL )&(jnext;j+; if(p-next=NULL|ji-1) return ERROR; q=p-next; p-next=q-next ; *s=q-data; free(q); return OK; /*listDelete*/ 5、写出算法的功能。int L(head) node * head; int n=0; node *p; p=head; while(p!=NULL) 精选学习资料 - - - - - - - - - 名师
14、归纳总结 - - - - - - -第 5 页,共 37 页学而不思则惘,思而不学则殆 p=p-next; n+; return(n); 答案:求单链表head的长度五、综合题1、编写算法,实现带头结点单链表的逆置算法。答案: void invent(Lnode *head) Lnode *p,*q; if(!head-next) return ERROR; p=head-next; q=p-next; p-next =NULL; while(q) p=q; q=q-next; p-next=head-next; head-next=p; 2、有两个循环链表,链头指针分别为L1 和 L2 ,要
15、求写出算法将L2 链表链到L1 链表之后,且连接后仍保持循环链表形式。答案: void merge(Lnode *L1, Lnode *L2) Lnode *p,*q ; while(p-next!=L1) p=p-next; while(q-next!=L2) q=q-next; q-next=L1; p-next =L2; 3、设一个带头结点的单向链表的头指针为head,设计算法,将链表的记录,按照data域的值递增排序。答案: void assending(Lnode *head) Lnode *p,*q , *r, *s; p=head-next; q=p-next; p-next=N
16、ULL; while(q) r=q; q=q-next; if(r-datadata) r-next=p; head-next=r; p=r; else while(!p & r-datap-data) s=p; p=p-next; r-next=p; s-next=r; p=head-next; 4、编写算法 ,将一个头指针为head 不带头结点的单链表改造为一个单向循环链表,并分析算法的时间复杂度。答案:void linklist_c(Lnode *head) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 37 页学而不思则惘,思
17、而不学则殆Lnode *p; p=head; if(!p) return ERROR; while(p-next!=NULL) p=p-next; p-next=head; 设单链表的长度(数据结点数)为N,则该算法的时间主要花费在查找链表最后一个结点上(算法中的while循环),所以该算法的时间复杂度为O(N) 。5 、已知 head 为带头结点的单循环链表的头指针,链表中的数据元素依次为(a1 ,a2,a3,a4,an ),A 为指向空的顺序表的指针。阅读以下程序段,并回答问题:(1)写出执行下列程序段后的顺序表A中的数据元素;(2)简要叙述该程序段的功能。if(head-next!=he
18、ad) p=head-next; A-length=0; while(p-next!=head) p=p-next; A-dataA-length +=p-data; if(p-next!=head)p=p-next; 答案:(1) (a2, a4, , ) (2)将循环单链表中偶数结点位置的元素值写入顺序表A6、设顺序表va 中的数据元数递增有序。试写一算法,将x 插入到顺序表的适当位置上,以保持该表的有序性。答案:void Insert_sq(Sqlist va, ElemType x) int i, j, n; n=length(va); if(x=vai) van=x; else i=
19、0; while(xvai) i+; for(j=n-1;j=I;j-) vaj+1=vaj; vai=x; n+; 7 、 假 设 线 性 表 采 用 顺 序 存 储 结 构 , 表 中 元 素 值 为 整 型 。 阅 读 算 法 f2 , 设 顺 序 表L=(3,7,3,2,1,1,8,7,3),写出执行算法 f2 后的线性表 L的数据元素, 并描述该算法的功能。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 37 页学而不思则惘,思而不学则殆 void f2(SeqList *L) int i,j,k; k=0; for(i=0;
20、ilength;i+) for(j=0;jdatai!=L-dataj;j+); if(j=k) if(k!=i)L-datak=L-datai; k+; L-length=k; 答案:(3,7,2,1,8) 删除顺序表中重复的元素8、已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,删除表中所有大于x 且小于 y 的元素(若表中存在这样的元素)同时释放被删除结点空间。答案:void Delete_list(Lnode *head, ElemType x, ElemType y) Lnode *p, *q; if(!head) return ERROR; p=head; q
21、=p; while(!p) if(p-datax) & (p-datanext; free(p); p=head; q=p; else q-next=p-next; free(p); p=q-next; else q=p; p=p-next; 9、在带头结点的循环链表L 中,结点的数据元素为整型,且按值递增有序存放。给定两个整数 a 和 b,且 arear=Q-front B. Q-rear=Q-front+1 C. Q-front=(Q-rear+1)%n D. Q-front=(Q-rear-1)%n 3、设计一个判别表达式中括号是否配对的算法,采用()数据结构最佳。A. 顺序表 B. 链
22、表C. 队列D. 栈4、带头结点的单链表head 为空的判定条件是() 。A. head=NULLB. head-next=NULL C. head-next!=NULL D. head!=NULL 5、一个栈的输入序列为:1,2,3,4,则栈的不可能输出的序列是() 。A. 1243 B. 2134 C. 1432 D. 4312E. 3214 6、若用一个大小为6的数组来实现循环队列,且当rear和 front的值分别为 0,3。当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为() 。A. 1和5 B. 2和4C. 4和2 D. 5和1 7、队列的插入操作是在()
23、。A. 队尾B. 队头C. 队列任意位置D. 队头元素后8、 循环队列的队头和队尾指针分别为front和rear, 则判断循环队列为空的条件是() 。A. front=rear B. front=0 C. rear=0 D. front=rear+1 9、一个顺序栈S,其栈顶指针为top ,则将元素 e入栈的操作是() 。A. *S-top=e;S-top+; B. S-top+;*S-top=e; C. *S-top=e D. S-top=e; 10 、表达式 a*(b+c)-d的后缀表达式是() 。A. abcd+-B. abc+*d-C. abc*+d- D. -+*abcd 11 、将
24、递归算法转换成对应的非递归算法时,通常需要使用()来保存中间结果。A. 队列B. 栈C. 链表D. 树12 、栈的插入和删除操作在() 。 A. 栈底B. 栈顶C. 任意位置D. 指定位置13 、五节车厢以编号1,2,3,4,5顺序进入铁路调度站(栈),可以得到()的编组。A. 3, 4,5,1,2 B. 2,4,1,3,5 C. 3, 5,4,2,1D. 1,3,5,2,4 14 、判定一个顺序栈S(栈空间大小为n)为空的条件是() 。A. S-top=0 B. S-top!=0 C. S-top=n D. S-top!=n 15 、在一个链队列中,front和rear分别为头指针和尾指针,
25、则插入一个结点s的操作为() 。A. front=front-next B. s-next=rear;rear=s C. rear-next=s;rear=s;D. s-next=front;front=s; 16 、一个队列的入队序列是1,2,3,4,则队列的出队序列是() 。A. 1, 2,3,4B. 4,3,2,1C. 1, 4,3,2 D. 3,4,1,2 17 、依次在初始为空的队列中插入元素a,b,c,d以后,紧接着做了两次删除操作,此时的队头元素是() 。A. a B. b C. cD. d 18 、 正常情况下, 删除非空的顺序存储结构的堆栈的栈顶元素,栈顶指针 top 的变化
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年太原理工大学数据结构试题库及答案 2022 太原 理工大学 数据结构 试题库 答案

限制150内