数据结构C语言试卷4_第1页
数据结构C语言试卷4_第2页
数据结构C语言试卷4_第3页
数据结构C语言试卷4_第4页
数据结构C语言试卷4_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、成都东软信息技术学院200 200 学年第 学期期末试题数据结构(C语言) 题号一二三四五六总分分数本课程为闭卷考试,试卷共六道大题,试卷满分100分,考试时间120分钟。一选择题(10×2分):共10小题,请将答案填入题中的括号中,每小题只有一个正确答案,错选或不选均不给分。1组成数据的基本单位是( )数据项 数据类型C数据元素 D数据变量2下面程序段的时间复杂度为( )。 for(i=0;i<m;i+) for(j=0;j<n;j+) Aij=i*j; AO(m2) BO(n2) CO(m+n) DO(m*n)3在一个长度为n的顺序存储线性表中,删除第i个元素(1in

2、+1)时,需向前移动( )个元素。An-i Bn-i+1Cn-i-1 Di4在一个单链表中,已知*q结点是*p结点的前趋结点,若在*q和*p之间插入*s结点,则需执行( )。As->next=p->next; p->next=s; Bq->next=s; s->next=p;Cp->next=s->next; s->next=p; Dp->next=s; s->next=q;5若让元素a,b,c依次进栈,则出栈次序不可能出现( )种情况。 Acba BbacCcab Dacb6在一个链队列中,假定front和rear分别为队头和队尾指

3、针,则插入*s结点的操作应执行( )。front->next=s; front=s; s->next=rear; rear=s;C rear->next=s; rear=s; Ds->next=front; front=s;7当采用顺序存储方式存储队列时,可能出现存储空间剩余,而不允许继续入队的情况,称为( )。 A溢出 B队列不能用顺序存储方式 C数组存储空间过小 D假溢出8一棵深度为k的满二叉树有( )个结点。 A2k -1 B2k-1 C2k D2k9一棵完全二叉树的结点按层次遍历从1开始编号,如果编号为m的结点有双亲,则双亲的编号为( )。A2×m B

4、m/2Cm1 Dm-110快速排序在( )情况下最不利于发挥其长处。A被排序的数据量很大 B被排序的数据完全无序C被排序的数据已基本有序 D被排序的数据中最大的值与最小值相差不大二填空题(30分):每空2分,1. 数据的逻辑结构被分为 、 、 和 四种。2在一个长度为n的顺序表中删除一个元素,最少需移动 个元素,最多需移动_个元素。3对于一个顺序栈作进栈运算时,应先判断栈是否为 ,判断的条件是 ,作出栈运算时,应先判断栈是否为 ,判断的条件是 。4栈的原则是 。5在一棵二叉树上第5层的结点数最多为 。6设一颗完全二叉树共有50个叶子结点,则它共有_个度为2的结点。7在一个具有n个顶点的无向完全

5、图中,包含有 条边,在一个具有n个顶点的有向完全图中,包含有 条边。三判断题(5×2分)1完全二叉树未必是满二叉树。( )2线性表中的每个元素都有一个前驱元素和后继元素。( )3二叉排序树采用先序遍历可以得到结点的有序序列。( )4采用顺序结构存储线性表时,其地址可以是不连续的。( )5一个有序的单链表不能采用折半查找法进行查找。( ) 四应用题(20分)1. 画出带头结点的单链表、单循环链表和双向循环链表的示意图,并归纳三者的不同之处。(9分)2. 对于给定的一组关键码:83,40,63,13,84,35,画出用简单选择排序对上述序列进行操作的各趟结果。(5分)3. 给出下图所示的

6、二叉树的先序、中序、后序的遍历结果。(6分)AFBCDGE五算法设计题(20分)1有顺序表A和B,其元素均按从小到大的升序排列,编写一个算法将它们合并成一个顺序表C,要求C的元素也是从小到大升序排列。要求写出完整代码。(12分)2写出折半查找的算法,并回答其使用的局限性。(8分)答案及评分标准:数据结构(C语言)答案及评分标准一选择题(10×2分):每小题只有一个正确答案,错选或不选均不给分。12345678910CDABCCDABC二填空题(30分):每空2分。1集合 线性结构 树型结构 图型结构 20 n13满 top=MAXSIZE-1 空 top=-1。4后进先出516649

7、7n三判断题(5×2分)1;2×;3×;4×;5四应用题(4×5分)1.a1anHHLAB单链表:只有从头结点出发,才能访问到所有结点。单循环链表:从任意一结点出发,均可访问到其他结点。双向循环链表:既可以方便的找到前趋结点,又可方便的找到后继结点。283,40,63,13,84,3513,40,63,83,84,3513,35,63,83,84,4013,35,40,83,84,6313,35,40,63,84,8313,35,40,63,83,843先序:ABDCEFG中序:DBAFGEC后序:DBGFECA4解决单链表的“第一个结点问题”

8、,使头指针变量不为空。五算法设计题(20分)1#define MAXSIZE 20typedef int datatype;typedef struct datatype dataMAXSIZE; int last;SeqList;SeqList *init_SeqList();void input(SeqList *L);void output(SeqList *L);void merge(SeqList *A,SeqList *B,SeqList *C);main() SeqList *A,*B,*C; datatype x; int i,n; A=init_SeqList(); B=in

9、it_SeqList(); C=init_SeqList(); input(A); input(B); merge(A,B,C); output(C); getch();SeqList *init_SeqList() SeqList *L; L=(SeqList *)malloc(sizeof(SeqList); L->last=-1; return L;void merge(SeqList *A,SeqList *B,SeqList *C) int i,j,k; i=0;j=0;k=0; while(i<=A->last&&j<=B->last)

10、 if(A->datai<B->dataj) C->datak+=A->datai+; else C->datak+=B->dataj+; while(i<=A->last) C->datak+=A->datai+; while(j<=B->last) C->datak+=A->dataj+; C->last=k-1;void input(SeqList *L) int n; printf("input numbers(less than 20):n"); for(n=0;n+) scanf("%d",&L->datan); if(L->datan=0) break; L->last=n; void output(SeqList *L) int n; for(n=0;n<=L->last;n+) printf("%dt",L->datan); 2int Binary_Search(S_TBL tbl,KeyType kx) int mid,flag=0; int low=1,high=tbl.length; while(low

温馨提示

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

评论

0/150

提交评论