




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上××科技大学成都学院二零零八至二零零九学年第一学期 数据结构 课堂测试(60分钟) 闭卷 考试时间:题号一二三总分评卷教师分数一填空题(每空2分,共40分);1. 数据结构算法中,通常用时间复杂度和_空间复杂度_两种方法衡量其效率。2. 下面程序段的时间复杂度为_O(n2)_。(n>1) for(i = 1; i <= n; i+)for(j = 1; j <= i; j+) x = x + 1; 3. 静态链表中指针表示的是_下一结点的地址_。4. 线型表、栈和队列都是_线型_结构,可以在线型表的_任意_位置插入和删除元素;对于
2、栈只能在_栈顶_插入和删除元素;对于队列只能在_队尾_插入元素和_队头_删除元素。5. 在具有n个单元的循环队列中,队满时共有_n-1_个元素。6. 在一个长度为n 的顺序表中第i 个元素(1<=i<=n)之前插入一个元素时,需向后移动_n-i+1_个元素。7. 在n个结点的单链表中要删除已知结点*p,需找到它的_前驱_。8. 带有一个头结点的单链表head为空的条件是_head->next= =NULL_。9. 在栈顶指针为hs的链栈中,判断栈空的条件是_hs= =NULL_。10. 在hq的链队列中,判定只有一个结点的条件是_hq.front->next=hq.re
3、ar_。11. 非空的循环单链表head的尾结点(由p指向),满足条件_p->next=head。12. 两个串相等的充分必要条件是_串长相等且对应字符相等_。13. 空串是_长度为0的串_,其长度等于_0_。14. 空格串是_由空格字符组成的串_, 其长度等于_空格的个数_ 。二单项选择题(每题2分,共30分);(说明:请将答案填入下表中)题号12345678910答案AABBDBCBBC题号1112131415答案AACDD1. 若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用(A)存储方式最节省时间。A顺序表 B双链表 C带头结点的双循环链表 D单循
4、环链表2. 设a1、a2、a3为3个结点,则如下的链式存储结构称为:A表元编号结点表元间关系1a132a213a32A循环链表 B单链表 C双向循环链表 D双向链表3. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?(B )A. 5 4 3 6 1 2 B. 3 4 6 5 2 1 C. 4 5 3 1 2 6 D. 2 3 4 1 5 64. 若栈采用顺序存储方式存储,现两栈共享空间V1.m,topi代表第i 个栈( i =1,2)栈顶,栈1 的底在v1,栈2 的底在Vm,则栈满的条件是(B )。A. top2-top1|=0 B. top1+1=top2 C
5、. top1+top2=m D. top1=top25. 数组用来表示一个循环队列,front为当前队列头元素的前一位置,rear为队尾元素的位置,假定队列中元素的个数小于,计算队列中元素的公式为(D)A. rearfront B.(nfrontrear)% nC. nrearfront D.(nrearfront)% n6. 设栈S 和队列Q 的初始状态为空,元素e1,e2,e3,e4,e5 和e6 依次通过栈S,一个元素出栈后即进队列Q,若6 个元素出队的序列是e2,e4,e6,e5,e3,e1 则栈S 的容量至少应该是( B)。A 6 B. 4 C. 3 D. 27. 在数据结构中,从逻
6、辑上可以把数据结构分成( C)。 A动态结构和静态结构 B紧凑结构和非紧凑结构 C线性结构和非线性结构 D内部结构和外部结构8. 判定一个顺序栈ST(最多元素为N)为空的条件是 (B )。ASTtop != ST.baseBSTtop=ST.baseCSTtop!=N DSTtop=N9. 一个队列的入列序列是1,2,3,4,则队列的输出序列是 B 。A4,3,2,1 B1,2,3,4 C1,4,3,2 D3,2,4,110. 判定一个循环队列QU(最多元素为N)为空的条件是 C 。AQU.front= (QU.rear+1)%N BQU.front!= (QU.rear+1)%NCQU.fr
7、ont= QU.rear DQU.front!= QU.rear 11. 判定一个循环队列QU(最多元素为m0)为满队列的条件是 A 。AQU.front= (QU.rear+1)%N BQU.front!= (QU.rear+1)%NCQU.front= QU.rear DQU.front!= QU.rear+112. 不带头结点的单链表head为空的判定条件是 A Ahead=NULL Bhead - >next=NULL Chead- >next=head Dhead!=NULL13. 15.在双向链表指针p 的结点前插入一个指针q 的结点操作是(C )。A. p->L
8、link=q;q->Rlink=p;p->Llink->Rlink=q;q->Llink=q;B. p->Llink=q;p->Llink->Rlink=q;q->Rlink=p;q->Llink=p->Llink;C. q->Rlink=p;q->Llink=p->Llink;p->Llink->Rlink=q;p->Llink=q;D. q->Llink=p->Llink;q->Rlink=q;p->Llink=q;p->Llink=q;14. 从一个具有n个结点的
9、单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较_D_个结点。AnBn/2C(n1)/2D(n+1)/215. 设串s1=ABCDEFG,s2='PQRST',函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串s的从序号i的字符开始的j个字符组成的字串, len(s)返回串s的长度,则con(subs(s1,2,len(s2), subs(s1,len(s2),2)的结果串是 D A)BCDEF B)BCDEFG C)BCPQRST D)BCDEFEF三综合题(每题6分,共30分)1. 线性表具有两种存储方式,即顺序方式和链接方式。现有一个具有五
10、个元素的线性表L=23,17,47,05,31,若它以单链表方式存储在下列100119号地址空间中,每个结点由数据(占2个字节)和指针(占2个字节,由大写字母表示)组成,如下所示:其中指针p,q,r,s,t的值分别为多少?该线性表的首结点起始地址为多少?末结点的起始地址为多少?(共6分)2. 答:p= 108 q = 116 r = 112 s= 0 或NULL t= 100 首址= 104 末址= 112 。3. 如果想将输入的一个字符序列逆序输出,如输入“abcdef ”,输出“fedcba”,请分析用线性表、堆栈和队列等方式正确输出的可能性? (共6分)线性表是随机存储,可以实现,靠循环
11、变量(j-)从表尾开始打印输出;堆栈是后进先出,也可以实现,靠正序入栈、逆序出栈即可;队列是先进先出,不易实现。4. 写出删除顺序表中第i个元素的算法:(共6分)Status ListDelete_sq(SqList &L, int i, ElemType &e)Status del_sqllist(SqList &L,int i, ElemType &e) if (i < 1i > L.length) return ERROR; e= L.elemi; for (j=i+1;j<= L.length;j+) L.elemj-1= L.elem
12、j; -L.length; return OK; 5. 写出顺序栈的入栈算法(共6分)Status Push(SqStack &S, SelemType e)void Push ( Stack &S, ElemType e ) /在栈顶之上插入元素e为新的栈顶元素p = new LNode ; / 建新的结点if(!p) exit(1) ; / 存储分配失败p -> data = e; p->next=S.top ;/ 链接到原来的栈顶S.top = p; / 移动栈顶指针+S.length;/ 栈的长度增1 / Push6. 写出链队列的出队列算法(共6分)Sta
13、tus DeQueue(LinkQueue &Q, QelemType &e) Status DeQueue (LinkQueue &Q, QElemType &e) / 若队列不空,则删除Q的队头元素, /用 e 返回其值,并返回OK;否则返回ERROR if (Q.front = Q.rear) return ERROR; p = Q.front->next; e = p->data; Q.front->next = p->next; if (Q.rear = p) Q.rear = Q.front; free (p); return
14、 OK;××科技大学成都学院20082009学年第一学期中期试题数据结构答案一 填空题(每题2分,共40分);题号参考答案1空间复杂度2O(n2)3下一结点的地址4线型,任意,栈顶,队尾,队头5n-16n-i+17前驱8head->next= =NULL9hs= =NULL10hq.front->next=hq.rear11p->next=head12串长相等且对应字符相等13长度为0的串,014由空格字符组成的串,空格的个数二单项选择题(每题2分,共30分); 题号12345678910答案AABBDBCBBC题号1112131415答案AACDD三综合
15、题(共30分)7. p= 108 q = 116 r = 112 s= 0 或NULL t= 100 首址= 104 末址= 112 。8. 线性表是随机存储,可以实现,靠循环变量(j-)从表尾开始打印输出;堆栈是后进先出,也可以实现,靠正序入栈、逆序出栈即可;队列是先进先出,不易实现。3Status del_sqllist(SqList &L,int i, ElemType &e) if (i < 1i > L.length) return ERROR; e= L.elemi; for (j=i+1;j<= L.length;j+) L.elemj-1= L
16、.elemj; -L.length; return OK; 4.void Push ( Stack &S, ElemType e ) /在栈顶之上插入元素e为新的栈顶元素p = new LNode ; / 建新的结点if(!p) exit(1) ; / 存储分配失败p -> data = e; p->next=S.top ;/ 链接到原来的栈顶S.top = p; / 移动栈顶指针+S.length;/ 栈的长度增1 / Push5 Status DeQueue (LinkQueue &Q, QElemType &e) / 若队列不空,则删除Q的队头元素,
17、/用 e 返回其值,并返回OK;否则返回ERROR if (Q.front = Q.rear) return ERROR; p = Q.front->next; e = p->data; Q.front->next = p->next; if (Q.rear = p) Q.rear = Q.front; free (p); return OK;全真模拟试题(一)一、 单项选择题(在每小题的4个备选答案中,选出正确的答案,并将其号码填在题干的括号内。每小题2分,共24
18、分)1 若某线性表中最常用的操作是取第i 个元素和找第i个元素的前趋元素,则采用( 4 )存储方式最节省时间。单链表 双链表 单向循环 顺序表2 串是任意有限个( 1 )符号构成的序列
19、; 符号构成的集合字符构成的序列 字符构成的集合3 设矩阵A(aij ,li,j 10)的元素满足:aij0(ij, li, j 10)aij=0 (i<j, li, j 10)现将A的所有非0元素以行序为主序存放在首地址为2000的存储区域中,每个元素占有4个单元,则元素A95的首址为2340 2336
20、; 2164 21604 如果以链表作为栈的存储结构,则退栈操作时( ) 必须判别栈是否满 对栈不作任何判别 必须判别栈是否空
21、0; 判别栈元素的类型5 设数组Data0.m作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为( )front=front+1 front=(front+1)% mrear=(rear+1)%m front=(front+1)%(
22、m+1)6 深度为6(根的层次为1)的二叉树至多有( )结点。 64 32 31 637 将含100个结点的完全二叉树从根这一层开始,每层上从左到右依次对结点编号,根结点的编号为1。编号为
23、49的结点X的双亲编号为( )24 25 23 无法确定8 设有一个无向图G=(V,E)和G=(V,E)如果G为G的生成树,则下面不正确的说法是( )G为G 的子图
24、 G为G 的边通分量G为G的极小连通子图且V=V G为G的一个无环子图9 用线性探测法查找闭散列表,可能要探测多个散列地址,这些位置上的键值( ) 一定都是同义词 一定都不是同义词
25、; 都相同 不一定都是同义词10 二分查找要求被查找的表是( 3 ) 键值有序的链接表
26、;链接表但键值不一定有序 键值有序的顺序表 顺序表但键值不一定有序11 当初始序列已经按键值有序,用直接插入算法对其进行排序,需要循环的次数为( )n2
27、; nlog2n log2n n-112 堆是一个键值序列k1,k2, kn,对i=1,2,|_n/2_|,满足( )kik2ik2i+1 &
28、#160; ki<k2i+1<k2ikik2i且kik2i+1(2i+1n) kik2i 或kik2i+1(2i+1n)二、 判断题(判断下列各题是否正确,正确在括号内打“V”,错的找“X”。每小题1分,共10分)1 双链表中至多只有一个结点的后继指针为空。( )
29、2 在循环队列中,front指向队列中第一个元素的前一位置,rear指向实际的队尾元素,队列为满的条件是front=rear。( )3 对链表进行插入和删除操作时,不必移动结点。( )4 栈可以作为实现程序设计语言过程调用时的一种数据结构。( )5 在一个有向图的拓朴序列中,若顶点a在顶点b之前,则图中必有一条弧<a,b>。
30、( )i6 对有向图G,如果从任一顶点出发进行一次深度优先或广度优先搜索就能访问每个顶点,则该图一定是完全图。( )7 “顺序查找法”是指在顺序表上进行查找的方法。( )8 向二叉排序树插入一个新结点时,新结点一定成为二叉排序树的一个叶子结点。()9 键值序列A,C,D,E,F,E,F是一个堆。10 &
31、#160; 二路归并时,被归并的两个子序列中的关键字个数一定要相等。()三、 填空题(每空2 分,共24分)1 设r指向单链表的最后一个结点,要在最后一个结点之后插入s所指的结点,需执行的三条语句是_;r=s; r->next=null;。2 在单链表中,指针p 所指结点为最后一个结点的条件是_。3 设一个链栈的栈顶指针是ls,栈中结点格式为i
32、nfo | link ,栈空的条件是_.如果栈不为空,则退栈操作为p=ls;_;free(p);。4 已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点,则该树中有_ 个叶子的结点。5 树有三种常用的存储结构,即孩子链表法、孩子兄弟链表法和_ .6 N个顶点的连通图的生成树有_条边。7 一个有向图G中若有弧<vi,vj>、<vj,vk>和<vi,vk>, 则在图G的拓扑序列中,顶点vi,vj和vk的相对位置为_。8 设表中元素的
33、初始状态是按键值递增的,分别用堆排序、快速排序、冒泡排序和归并排序方法对其进行(按递增排序),最省时间,最费时间。9 下面是将键值为x 的结点插入到二叉排序树中的算法,请在划线处填上适当的内容。typedef struct pnode int key; struct pnode *left, *right; pnode;void searchinsert(int x, pnode t ) /*t为二叉排序树
34、根结点的指针*if ( )p=malloc(size);p->key=x;p->lchild=null; p->rchild=null;t=p; else if (x<t->key) searchinsert(x,t->lchild) else_;四、
35、60; 应用题(本题共分)1树的后根遍历方法是:若树非空则(分)(1)依据次后根遍历根的各个子树,m;(2)访问根结点2. 将下图的森林转换为二叉树。(分)3. 下图表示一个地区的交通网,顶点表示城市,边表示连结城市间的公路,边上的权表示修建公路花费的代价。怎样选择能够沟通每个城市且总造价最省的n-1条公路,画出所有可能的方案。(分) 图7.11 遍历无向图 (a) 无向图G6
36、(b) 深度优先搜索示例 (c) G6的邻接表表示(c)表头结点 4已知一个无向图的邻接表如下图所示。(本题分,每小题分) &
37、#160;(1) 画出这个图。(2) 以v1为出发点,对图进行广度优先搜索,写出所有可能的访问序列。5.设n个元素的有序表为,为一个给定的值,二分查找算法如下: int binsearch(sqlist R, keytype K) j=1;h=n ;suc=0; while(j<=h)&&(!suc) mid =(j+h)/2; switch
38、60; case K=Rmid.key: suc=1; break; case K<Rmid.key: h=mid-1; break; case K>Rmid.key: j=mid+1
39、; if (suc) return(mid); else return(0);将上述算法中划线语句改为:K<Rmid.key: h=mid.() 改动后,算法能否正常工作?请说明原因。()
40、60;若算法不能正常工作,给出一个查找序列和一个出错情况的查找键值;若能正常工作,请给出一个查找序列和查找某个键值的比较次数。(本题分,每小题分)6.有一组键值25,84,21,47,15,27,68,35,24,采用快速排序方法由小到大进行排序,请写出每趟的结果,并标明在第一趟排序过程中键值的移动情况。(本题分)五、设计题(共14分)1设棵二叉树以二叉链表为存储结构,结点结构为lchild |data |rchild 。设计一个算法,求在前根序列中处于第k个位置的结点。(本题分)2 设某单链表的结点结构为data |next,试画出该链表的结构图,并用类语言编写算法判断
41、该链表的元素是否是递增的。(本题分) 全真模拟试题(一)参考答案一、单项选择题1 2 3 分析:按题意,矩阵A是个三角矩阵,A I,j的首地址可用下列公式计算: LOC(aij)=LOC(a11)+(k-1)*L 其中K为AI,j在A中的序号k=I*(I-1)/2+j,L为每个元素所占
42、的单元数。 所以有:LOC(aij)=2000+(9*(9-1)/2+5-1)*4=2000+160=2160。故为答案4 5678 分析:如果G为G的生成树,那么G是G的子图,也是G的无环子图,并且还是G的极小连通子图,且V=V,而连通分量则是指无向图的极大连通子图。故答案是错误的。9 10。 11。 12。二、判断题 1.v 2.x 3.v 4.v 5.x &
43、#160;6.x 7.x 8.v 9.v 10.x三、填空题1 R->next =s.2 P->next= = NULL3 Ls= =NULL 、ls=ls->link.4 12 分析: 设n1=2,n2=3,n3=4,
44、60;树的总结点数为n=n0+ n1+n2+n3 树的分支数为n-1= n1+2n2+3n3 -得:-1= n2+2n3-n0 有n0=n2+2n3+1=3+2*4+1=125 双亲表示法。6 N-17
45、 I,j,k.8 冒泡排序、快速排序9 T= =NULL、searchinsert(x,t->rchild).四、应用题1 EBFGCKHIJDA。2 答案如图应用题I 9. 2.2 所示。 3 3分析:本题实际上是求最小生成树问题。由于衅中有两条权值为6的边,故可以得到两种方案。答
46、案如图应用题I 9. 3.2 所示。4 答案:(1)答案如图应用题I 9. 4.2 所示。(2)v1 v2 v4 v5 v3 和 v1 v4 v2 v3 v5。5(1)经过改动以后,有可能出现死循环,比如当查找的键值K小于有序表中的最小键值时,就会出现死循环。故算法不能正常进行。 (2)假设有序表的查找序列为(2,3,4,5,6),当待查的键值K=1时,出现死循环。6答案:
47、0;25 84 21 47 15 27 68 35
48、 24第一趟 24 15 21 25 47 27 68 35
49、60; 84第二趟 21 15 24 25 35 27 47 68
50、 84第三趟 15 21 24 25 27 35 47
51、; 68 84 得到 15 21 24 25 27 35
52、; 47 68 84第一趟排序过程中键值的移动情况如下:第一趟: 25 84 21 47 15
53、60; 27 68 35 24 一次交换之后 24 84 21 47 15
54、160; 27 68 35 25二次交换之后 24 25 21 47 15
55、160;27 68 35 84 24 25 21 47
56、0; 15 27 68 35 84 24 25 21 47 15 27 68 35 &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 快递员计件合同协议
- 和4s店签合同协议
- 2025商场摊位租赁合同示范文本
- 快递工资月结合同协议
- 母婴工厂代加工合同协议
- 快递劳务承揽合同协议
- 欠款房产证抵押合同协议
- 商标出租合同协议
- 2025年铁岭市九年级中考语文第一次模拟试卷附答案解析
- 楼道大件搬运合同协议
- 完整版《中药学》课件
- 工程推动会监理单位总监办发言稿
- 石家庄市既有建筑改造利用消防设计审查指南(2024年版)
- 船舶修造行业安全风险监控与应急措施
- 电信网络维护与故障处理指南
- 2024高考物理一轮复习第63讲光的波动性电磁波(练习)(学生版+解析)
- DB11T 065-2022 电气防火检测技术规范
- NYT-1121.12-2006-土壤-总铬-方法验证
- 《护理心理学》期末考试复习题库(含答案)
- 智能风控与合规技术在证券领域的应用
- 辽宁省2024年中考英语真题【附真题答案】
评论
0/150
提交评论