级计本数据结构期中考试卷(含答案)
- 格式:doc
- 大小:86.00 KB
- 文档页数:5
数据结构期中考试题一、选择题1. 数据结构是()的研究。
A. 算法B. 数据C. 硬件D. 软件2. 下列哪种数据结构在插入和删除操作时效率较高?A. 数组B. 链表C. 栈D. 队列3. 以下哪种数据结构使用了先进先出(FIFO)的策略?A. 栈B. 队列C. 链表D. 数组4. 在二叉树中,每个节点最多可以有几个子节点?A. 0B. 1C. 2D. 35. 以下哪种数据结构在查找操作时效率较高?A. 数组B. 链表C. 栈D. 二叉树二、简答题1. 请简要介绍栈(Stack)和队列(Queue)的特点及应用场景。
2. 请解释树(Tree)和图(Graph)的区别,并给出它们各自的应用场景。
3. 请描述二叉树(Binary Tree)的特点并给出一个示例图。
4. 请简要介绍哈希表(Hash Table)的原理及其在实际应用中的优势。
三、编程题1. 设计一个栈,使得它具有以下功能:- push(val):将元素val压入栈中。
- pop():弹出栈顶元素,并返回弹出的元素。
- getMin():返回栈中最小的元素。
2. 设计一个队列,使得它具有以下功能:- push(val):将元素val插入队列中。
- pop():移除并返回队列头部的元素。
- peek():返回队列头部的元素。
- empty():检查队列是否为空。
四、综合题某公司需要设计一个学生信息管理系统,主要功能包括添加学生信息、查询学生信息、删除学生信息以及修改学生信息。
请使用合适的数据结构和算法来实现该系统,并说明你的选择理由。
总结:通过本次期中考试题,我们从选择题、简答题到编程题,对数据结构的基本知识和应用有了更深入的了解。
数据结构在计算机科学中扮演着重要的角色,合理的选择和运用数据结构可以提高程序的效率和性能。
希望大家能够加强对数据结构的学习和应用,为解决实际问题提供更有效的解决方案。
一、单项选择题(本题总分 20分,每题 2分)在每小题列出的四个选项中只有 一个选项是符合题目要求的,请将正确选项前的字母。
1.若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为( D ) 。
A.顺序表 B.链表 C.索引表 D.散列表采用排除法,顺序表存储位置表示数据元素的顺序关系,跟关键字无法;链表的地址是动态分配的;索引表是 按数据元素的关键字排序所得,它的数据元素是没有规律的2.在长度为 n 的顺序表的第 i(1≤i ≤n+1)个位置上插入一个元素,元素的移动次数为( A ) 。
A.n -i+1B.n -iC.iD.i -1代入计算法,我们知道在 i=n+1 时不需要移动元素3.若一棵二叉树的先序遍历序列为 a,b,c ,则由 abc 三个结点构成的二叉树个数为( B ) 。
A.4B.5C.6D.74.三维数组 A[4][5][6]按行优先存储方法存储在内存中,若每个元素占 2 个存储单元,且数组中第一个元素的存 储地址为 130,则元素 A[3][4][5]的存储地址为(B A.370B .368C .366) 。
D.372Loc(3,4,5)=loc(0,0,0)+(3*5*6+4*6+5)*2=130+119*2=368;5.高度为 h 的二叉树(仅含根结点的二叉树高度为 1)的结点最少是多少( D) 。
A. h+1B. 2hC. 2h -1D. h二叉树性质 26. 将两个各有 n 个元素的有序表归并成一个有序表,其最多的比较次数是( A. nB.n+1 C. 2n-1D. n-17. 已知一算术表达式的中缀形式为 A +B *C -D/E ,后缀形式为 ABC *+DE/-,其前缀形式为( C) 。
A )。
A. -+A*BC/DE C. -+*ABC/DEB. –A+B*CD/E D. –A+B*C/DE根据中缀和后缀表达式可画出表达树如下:- + /A* D EBC故前缀表达式为:-+A*BC/DE数据结构期中考试8.下面图示的顺序存储结构表示的二叉树是( A )。
2019 -2020 学年第2学期期中考试《数据结构与算法》试卷一、填空题(共42分,前39空*1分,最后一空3分)1.从命令行编译程序:打开一个命令提示符窗口,设置好环境变量,进入C#源程序所在的文件夹,然后输入编译C#源程序test.cs的完整命令是。
如果程序没有包含任何编译错误,生成的结果文件名是。
2. C#的数据类型分为类型和类型,前者的变量本身包含他们的数据,包括,,等,而引用类型的变量包含的是,其包括,等。
int类型变量的位长是,char类型的位长是。
3.数据结构可以看成是关于数据集合的数据类型,它关注三个方面的内容:数据元素的特性、数据元素之间的关系以及由这些数据元素组成的数据集合所允许进行的操作。
数据结构课程主要讨论数据的、数据的和数据的这三个方面的内容。
4.在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。
5.一个算法的效率包含两方面的内容:效率和效率。
6.线性表、栈和队列都是结构。
可以在线性表的______位置插入和删除元素;栈只能在_______插入和删除元素,其中插入操作称作, 删除操作称作;队列只能在插入和删除元素,其中插入操作称作, 删除操作称作。
因此,栈具有特性,队列具有特性。
函数调用时,处理参数和返回地址,通常要使用的数据结构是。
7. 设栈S的初始状态为空,元素a,b,c,d,e,f依次入栈S,出栈的序列为b,d,c,f,e,a,则栈S的容量至少应该是。
二、综合题(58分)1.(6分)分析下列两段程序的时间复杂度。
(1)下面程序段的时间复杂度是for(i=0; i<n; i++)for(j=0; j<i; j++)Console.Write(i*j);(2)下面程序段的时间复杂度是for(int i=1; i<=n; i*=2)for(int j=1; j<=i; j++)Console.Write(i*j);2.(4分)分析并说明下列代码的作用是什么:Queue<int> q = new Queue<int>();for (int i = 0; i < 10; i++) {q.Enqueue(i * 2);}foreach (var item in q) {Console.Write("{0} ",item);}Console.WriteLine();Stack<int> s = new Stack<int>();int c = q.Count;for (int i = 0; i < c; i++) {s.Push(q.Dequeue());}foreach (var item in s) {Console.Write("{0} ", item);}Console.WriteLine();3. (12分)已知顺序表的基本定义如下:public class SequencedList<T> {private T[] items;private int count = 0;private int capacity = 0;}请重写其ToString方法:public override string ToString()。
数据结构与算法期中考试卷(含答案)⽟林师范学院期中课程考试试卷(2010——2011学年度第⼀学期)命题教师:刘恒命题教师所在系:数计系课程名称:数据结构与算法考试专业:信计考试年级:09级⼀、单项选择题(每题2分,共30分,把正确答案填⼊表格中) 1、在数据结构中,从逻辑上可以把数据结构分成( C )。
A 、动态结构和静态结构B 、紧凑结构和⾮紧凑结构C 、线性结构和⾮线性结构D 、逻辑结构和存储结构 2、结构中的数据元素之间存在⼀个对多个的关系,称为(B )结构。
A 、线性 B 、树形 C 、图状 D 、⽹状 3、以下关于线性表的说法不正确的是(C )。
A 、线性表中的数据元素可以是数字、字符、记录等不同类型。
B 、线性表中包含的数据元素个数不是任意的。
C 、线性表中的每个结点都有且只有⼀个直接前驱和直接后继。
D 、存在这样的线性表:表中各结点都没有直接前驱和直接后继。
4、关于单链表的说法,请选出不正确的⼀项( C)。
A 、逻辑相邻、物理不⼀定相邻B 、不能随机存取C 、插⼊与删除需移动⼤量元素D 、表容量易于扩充 5、关于顺序表的说法,请选出不正确的⼀项(D )。
A 、逻辑相邻、物理相邻 B 、可实现随机存取 C 、存储空间使⽤紧凑 D 、表容量易于扩充6、设N 为正整数,试确定下列程序段中前置以记号@语句的频度为(A )。
x=91;y=100;while(y>0){@if(x>100){x-=10;y--;} else x++; } A 、1100 B 、 9100 C 、110 D 、 9107、在顺序表中删除⼀个元素,平均需要移动( C)元素,设表长为n 。
A、n/2-1 B 、n/2+1C 、n/2D 、(n+1)/28、对单链表执⾏下列程序段,请选出正确的⼀项( A)。
T=P;While(T->next!=NULL ){T —>data=T —>data*2;T=T —>next;} A 、R->data=4 B 、R->data=8C 、H->data=4D 、Q->data=79、若⼀个栈的输⼊序列是1,2,3,┅,n ,输出序列的第⼀个元素是n,则第k 个输出元素是( C)。
《数据结构》期中测试班级:姓名:学号:一、填空题:1、在数据结构中,从逻辑上可以把数据结构分为集合、线性结构、树形结构和图状结构,其中树形结构和图状结构合称为非线性结构。
数据结构被形式地定义为二元组(D,S),其中D是数据元素的有限集合,S是D上关系的有限集合。
2、算法的五个重要特性是有穷性、确定性、可行性、输入和输出。
3、一个顺序表第一个元素的存储地址是100,每个元素的长度为3,则第6个元素的地址是115。
在顺序表中插入或删除一个元素,需要平均移动(n+1)/2个元素,具体移动的元素个数与插入或删除元素的位置有关。
顺序表中逻辑上相邻的元素的物理位置相邻。
单链表中逻辑上相邻的元素的物理位置不一定相邻。
单链表中,除了首元结点外,任一结点的存储位置由其前驱结点的指针域指示。
在单链表中设置头结点的作用是使第一个结点与其他结点的操作统一。
4、从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较(n+1)/2个结点。
在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是O(n)。
给定有n个元素的线性表,建立一个有序单链表的时间复杂度是O(n2)。
5、已知L是无表头结点的非空单链表,且指针p所指结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。
在p所指结点后插入s所指结点:4、1。
在p所指结点前插入s所指结点:7、11、8、4、1。
在表首插入s所指结点:5、12。
在表尾插入s所指结点:11、9、1、6。
1)p->next=s;2)p->next=p->next->next;3)p->next=s->next;4)s->next=p->next;5)s->next=L;6)s->next=NULL;7)q=p;8)while(p->next!=q) p=p->next;9)while(p->next!=NULL) p=p->next;10)p=q;11)p=L;12)L=s;13)L=p;6、已知指针p所指结点是某双向链表的中间结点,试从下列提供的答案中选择合适的语句序列。
福建师范大学数学与计算机科学学院
2009--2010学年度上学期08电信
《数据结构》期中试题
试卷类别:闭卷考试时间:90分钟
倚窗远眺,目光目光尽处必有一座山,那影影绰绰的黛绿色的影,是春天的颜色。
周遭流岚升腾,没露出那真实的面孔。
面对那流转的薄雾,我会幻想,那里有一个世外桃源。
在天阶夜色凉如水的夏夜,我会静静地,静静地,等待一场流星雨的来临…
许下一个愿望,不乞求去实现,至少,曾经,有那么一刻,我那还未枯萎的,青春的,诗意的心,在我最美的年华里,同星空做了一次灵魂的交流…
秋日里,阳光并不刺眼,天空是一碧如洗的蓝,点缀着飘逸的流云。
偶尔,一片飞舞的落叶,会飘到我的窗前。
斑驳的印迹里,携刻着深秋的颜色。
在一个落雪的晨,这纷纷扬扬的雪,飘落着一如千年前的洁白。
窗外,是未被污染的银白色世界。
我会去迎接,这人间的圣洁。
在这流转的岁月里,有着流转的四季,还有一颗流转的心,亘古不变的心。
2014-2015学年第二学期《数据结构与算法》期中考试学号:姓名:一、写语句1.设单链表结点指针域为next,试写出删除链表中指针p所指结点的直接后继的C语言语句。
2.设单链表中某指针p所指结点(即p结点)的数据域为data,链指针域为next,请写出在p结点之前插入s结点的操作3. 设双向循环链表中结点的数据域、前驱和后继指针域分别为data,pre和next,试写出在指针p 所指结点之前插入s结点的C语言描述语句。
4. 一线性表存储在带头结点的双向循环链表中,L为头指针。
如下算法:(1)说明该算法的功能。
(2)在空缺处填写相应的语句。
void unknown (BNODETP *L){ …p=L->next; q=p->next; r=q->next;while (q!=L){ while (p!=L) && (p->data>q->data) p=p->prior;q->prior->next=r;(1) ______;q->next=p->next;q->prior=p;(2) ______;(3) ______;q=r;p=q->prior;(4) ______;} }二、写算法1.设有一个正整数序列组成的有序单链表(按递增次序有序,且允许有相等的整数存在),试编写能实现下列功能的算法:(要求用最少的时间和最小的空间)(1)确定在序列中比正整数x大的数有几个(相同的数只计算一次,如序列{20,20,17,16,15,15,11,10,8,7,7,5,4}中比10大的数有5个);(2) 在单链表将比正整数x小的数按递减次序排列;(3) 将正整数(比)x大的偶数从单链表中删除。
2. 设键盘输入n个英语单词,输入格式为n, w1, w2, …,wn,其中n表示随后输入英语单词个数,试编一程序,建立一个单向链表,实现:(1)如果单词重复出现,则只在链表上保留一个。
数据结构期中试卷及答案解析考试说明考试说明:考察前五章小题,难度接近真题。
满分100分,共20道选择题,每题5分。
请在60分钟内完成。
C T(n)=n3+5000nD T(n)=2nlogn-1000n参考答案:C本题考察时间复杂度,多个项相加时,只保留最高阶项由于巴啦啦能量——“常<对<幂<指<阶”,因此T(n)=logn+5000n=O(n)T(n)=n2-8000n=O(n2)T(n)=n3+5000n=O(n3)T(n)=2nlogn-1000n=O(nlogn)所以O(n3)复杂度最大,选C。
3.下列叙述中正确的是()①线性表在链式存储时,查找第 i 个元素的时间同 i 的值成正比②线性表在链式存储时,查找第 i 个元素的时间同 i 的值无关③线性表在顺序存储时,查找第 i 个元素的时间同 i 的值成正比A. 仅①B. 仅②C. 仅③D. ①②③参考答案:A线性表在链式存储时,查找第 i 个元素的时间同 i 的值成正比。
线性表在顺序存储时,查找第 i 个元素的时间同 i 的值无关4.若线性表最常用的操作是存取第i个元素及其前驱和后继元素的值,为节省时间应采用的存储方式()。
A. 单链表B. 双向链表C. 单循环链表D. 顺序表参考答案:D注意到,题目要求存取第i个元素及其前驱和后继,ABC三个选项找到第i个元素的时间复杂度均为O(n),而D选项对于这3个位置的存取的时间复杂度均为O(1),故选D。
5.静态链表中next域表示的是()A 下一个元素的地址B 下一个元素的值C 当前元素的值D 下一个元素在数组中的位置参考答案:D静态链表一般保存在数组中,它和链表最大的区别是静态链表占用一段固定的区间,所以next域只需要表示下一个元素在数组中的下标即可而不是表示下一个元素的地址,选D。
6.对于不带头结点的链栈L(next域表示该结点下一个元素),top指针指向栈顶元素(栈顶在链头方向),则x结点进栈操作为A top->next=x;top=x;B top=x;top-next=x;C top=x;x->next=top;D x->next=top;top=x;参考答案:D本题考察链栈的操作x入栈之后x下一个元素为原来的top,所以先把x->next=top,然后更新top,栈顶元素指向x。
一、选择题(每小题 1分,共10分)1、队列是插入和删除受限的线性表,其删除操作是在线性表的(1)进行。
A.表头 B.表尾 C.任意位置 D.指定位置2、下述哪一条是顺序存储结构的优点(2)。
A.存储密度大 B.插入运算方便C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示3、设有一个栈,元素的进栈次序为A, B, C, D, E,下列哪个是不可能的出栈序列(3)。
A.A, B, C, D, E B.B, C, D, E, AC.E, A, B, C, D D.E, D, C, B, A4、若二叉树的根结点所在的层次为第1层,则该二叉树的第k层上至多有(4)个结点。
2k B.2k C.2k-1 D.2k+1A. 15、设单链表中指针p指向结点m,若要删除m的后继结点(假设该后继结点存在),则需修改指针的操作为(5)。
A.p->next=p->next->next; B.p=p->next;C.p=p->next->next; D.p->next=p;6、下面程序段的时间复杂度为(6)。
for(int i=0; i<m; i++)for(int j=0; j<n; j++) a[i][j] = i*j;A.O(m2) B.O(n2) C.O(m+n) D. O(m*n)7、非空的循环单链表head的尾结点指针p满足(7)。
A.p==NULL B.p== head C.p->next==head D.p->next==NULL8、已知二维数组A[0..9,0..9]中,元素a[2][0]的地址为560,每个元素占4个字节,则元素a[1][0]的地址为(8)。
A. 518B. 520C. 522D. 5249、在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队满的条件为(9)。
A.rear%n= = front B.(front+l)%n= = rearC.rear%n -1= = front D.(rear+l)%n= = front10、假设在一棵二叉树中,度为2的结点数为15,度为1的结点数为10个,则该二叉树的分支总数为(10)个。
厦门大学《_数据结构_》课程期中试卷信息科学与技术学院计算机科学系__年级___专业主考教师:____试卷类型:(A卷/B卷)任选5题((1,2),(3,4),(5,6),(7,8)中必须至少做一题),每题20分。
一、试设计一个双栈结构,它有两个端点end1和end2,满足从end1端插入的表目只能从end1端被删除,从end2端插入的表目只能从end2端被删除,并给出指定端i(i=1,2)的进栈push(S,e,i)和出栈pop(S,e,i)操作的算法描述。
再设计一个算法,它能够将一个有限长度的数据序列a1,a2,…,an,按照下标奇偶序号交替的方式将ai (1≤i≤n)分别从两端入栈,然后将数据出栈以实现整个数据序列的倒排。
该双栈宜采用顺序存储、栈顶迎面增长的存储方式,其形式定义如下:#define STACK_SIZE 1000typedef struct {SElemType base[STACK_SIZE];SElemType *top[3]; //top[1]表示end1端的栈顶指针,top[2]表示end2端的栈顶指针//初始值分别为base和base+STACK_SIZE-1}DSqStack;指定端i(i=1,2)的进栈push(S,e,i)和出栈pop(S,e,i)操作的算法描述如下:Status push(DSqStack &S, SElemType e, int i) {if ( S.top[1]-S.top[2]==1 ) //栈满exit(OVERFLOW);else if (i==1)*S.top[1]++ = e;else if (i==2)*S.top[2]-- = e;elsereturn ERROR;return OK;}Status pop(DSqStack &S, SElemType &e, int i) {if (i==1) {if ( S.top[1] == S.base ) return ERROR;e = *--S.top[1] = e;return OK;}else if (i==2) {if (S.top[2] == S.base+STACK_SIZE-1) return ERROR;e = *++S.top[2];return OK;} elsereturn ERROR;}基于上述结构的数据序列的倒排算法描述如下:Status resevers(DSqStack &S, SElemType a[], int n) {for (j=1;j<=n;j++)if (j%2==0) push(S, a[j-1],2);else push(S, a[j-1],1);for (j--;j>=1;j--)if (j%2==0) pop(S, a[n-j],2);else pop(S, a[n-j],1);return OK;}二、利用两个栈S1、S2模拟一个队列(如客户队列)时,如何用栈的运算实现队列的插入、删除运算。
一、判断题:1、线性表的逻辑顺序与物理顺序总是一致的。
( )2、线性表的顺序存储表示优于链式存储表示。
( )3、线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。
( )4、二维数组是其数组元素为线性表的线性表。
( )5、每种数据结构都应具备三种基本运算:插入、删除和搜索。
( )6、数据结构概念包括数据之间的逻辑结构,数据在计算机中的存储方式和数据的运算三个方面。
( )7、线性表中的每个结点最多只有一个前驱和一个后继。
()8、线性的数据结构可以顺序存储,也可以链接存储。
非线性的数据结构只能链接存储。
()9、栈和队列逻辑上都是线性表。
()10、单链表从任何一个结点出发,都能访问到所有结点()11、删除二叉排序树中一个结点,再重新插入上去,一定能得到原来的二叉排序树。
()12、快速排序是排序算法中最快的一种。
()13、多维数组是向量的推广。
()14、一般树和二叉树的结点数目都可以为0。
()15、直接选择排序是一种不稳定的排序方法。
()16、98、对一个堆按层次遍历,不一定能得到一个有序序列。
()17、在只有度为0和度为k的结点的k叉树中,设度为0的结点有n0个,度为k的结点有nk个,则有n0=nk+1。
()18、折半搜索只适用与有序表,包括有序的顺序表和有序的链表。
()19、堆栈在数据中的存储原则是先进先出。
()20、队列在数据中的存储原则是后进先出。
()21、用相邻矩阵表示图所用的存储空间大小与图的边数成正比。
()22、哈夫曼树一定是满二叉树。
()23、程序是用计算机语言表述的算法。
()24、线性表的顺序存储结构是通过数据元素的存储地址直接反映数据元素的逻辑关系。
()25、用一组地址连续的存储单元存放的元素一定构成线性表。
()26、堆栈、队列和数组的逻辑结构都是线性表结构。
()27、给定一组权值,可以唯一构造出一棵哈夫曼树。
()28、只有在初始数据为逆序时,冒泡排序所执行的比较次数最多。
1.评价算法优劣的基本标准有哪些?请就每一项给出简短说明。
答:(1)正确性:对输入的合法数据(包括边界情况),都能有正确的输出结果。
(2)健壮性:对输入的非法数据,算法能适当地做出反应或进行处理,而不是产生莫名其妙的输出结果。
(3)可读性:有助于人对算法的理解,易于发现错误,便于调试和修改。
(4)效率与低存储量需求:效率和存储量需求分别指算法执行所需要的时间和最大存储空间。
2.已知一棵二叉树的中序和后序序列分别为GLDHBEIACJFK和LGHDIEBJKFCA,(1)画出这棵二叉树,对这棵二叉树的构造过程给出一个简短说明;(2)将这棵二叉树理解为“孩子-兄弟法”表示的森林,画出这个森林。
答:(1)构造出的二叉树如图1所示:图1构造过程说明:①后序序列的最后一个元素为A, 得知二叉树的根为A;②在中序序列中找到树根A, A左侧的部分GLDHBEI为左子树的中序序列,A右侧的部分CJFK为右子树的中序序列。
并得知左子树7个节点,右子树4个节点;③后序序列的前7个节点LGHDIEB是左子树的后序序列,后续序列的后4个节点JKFC是右子树的后序序列;④根据中序GLDHBEI后序LGHDIEB求左子树,根据中序CJFK后序JKFC 求右子树。
依此类推,便可唯一构造出此二叉树。
(2)“孩子-兄弟表示法”,又称二叉链表表示法,链表中结点的两个链域分别指向该结点的第一个孩子和下一个兄弟结点,一棵二叉树与森林一一对应,该森林如图2所示:图23.字符A,B,C,D,E,F,G的使用频度分别是15,8,10,21,6,19,3,写出A,B,C,D,E,F,G的Huffman编码,列出编码过程,解释Huffman 有什么优点。
解:编码过程如下:各字符编码为字符 A B C D E F G编码011 110 010 00 1111 10 1110优点:Huffman编码为前缀码,它根据结点出现的频度由低到高编码,则可以使频度较高的结点有尽可能短的编码,从而使整个发送文件的总编码长度尽可能短。
-、判1、我11表的也辑顾序与物理陨障总是一致的。
()2、线性表的顺序存储表示优于飪氏存储表示。
()3、找性表若采用箍式存储表示时所有给点之间的存昭单元地址可连续可不连续。
()4、二维数组是貝数组元素为线性表的线性表。
()5、每种数据结枸都应具备三种基本运算:捕人、删除和搜索。
()6、数齬给构炭念包括数齬之间的逆瑕结构,数据在廿算机中的存储方氏和数据的运算三个方而。
()7、线性表中的每彳、结点最多只有一彳、痢驱和一个后继。
()8、我性的数据结枸可£1顺疥存储,也可決存储。
非找ft的数摒结构只能存储。
()9、枝和从艸逻辑上胡是线性表。
()10、单箍表从任何一个结点出发,邵能诉冋到所有结点()11、删除二叉HI If ffl中一个给点,再車新捕人上去,一定能得到原来的二叉UUffflo ()12、快速排床是孙Jf算法中最快的一种。
()13、多维数组是向量的推广。
()14. -filfflft二叉树的结点数目制可以力0。
()15、有接选tHlf是一种不稳定的排序方法。
()16、98、对一个堆按层次遍历,不一定能得到一个有序序列。
()17、在只有度为0和度为k的给点的k叉树中,设度为0的结点有nO个,度力k的结点有nk 个,则有n0=nk+1o ()18、折半搜索只适用与有序表,色括有序的颇序表相有序的85表。
()19、堆枝在数稠中的存储原剧是先进先出。
()20、臥列在数需中的存昭原II是后进先出。
()21、用皿邻矩阵表示图两用的存储空间大小与图的ii数成正比。
()22、略夫曼喲一定是满二叉讯。
()23、程序是用廿算机语言表述的算进。
()24、线徃表的顺Jf存储结构是通ilfiS元索的存储地址胃接反映数摒元索的廻辑关系。
(25、用一组地址连续的存昭单元存笊的元索一定构成找性表。
()26、堆枝、臥列和数组的逆辑结构邵是线性表结构。
()27、给定一组权值,可以唯一构危出一棵盼夫Ifflo ()28、只有在初始数据力逆序时,冒泡排序所执行的比较次数E^o ()29、希尔孙序在较率上较頁接接人松序有较大的ttiSo E是不稳定的。
1 / 5玉林师范学院期中课程考试试卷(2010——2011学年度第一学期)命题教师:刘恒 命题教师所在系:数计系课程名称:数据结构考试专业:计算机考试年级:09级一、单项选择题(每题2分,共30分,把正确答案填入表格中) 1、下列哪项不是衡量算法优劣的规范( )。
A 、健壮性B 、可行性C 、可读性D 、效率与低存储量2、设n 为正整数,则下列程序段中前置以记号@的语句频度为( )。
k=0。
for(i=1。
i<=n 。
i++) { for(j=i 。
j<=n 。
j++) @ k++。
}A 、2nB 、n-1C 、n(n+1)/2D 、n3、关于线性表()n a a a ,...,,21的说法,下列哪个是不正确的( )。
A 、数据元素同构。
B 、数据元素个数n 为表长度。
C 、当n=0时,线性表为空表。
D 、数据项能出现缺项。
4、在顺序表中,只要知道( ),就可在相同时间内求出任一结点的存储地址。
A 、基地址和结点大小B 、结点大小C 、基地址D 、向量大小5、在( )运算中,使用顺序表比链表好。
A 、插入B 、删除C 、根据序号查找D 、根据元素值查找6、设N 为正整数,试确定下列程序段中前置以记号@语句的频度为( )。
x=91。
y=100。
while(y>0){@if(x>100){x-=10。
y-=2。
} else x++。
} A 、1100B 、550 C 、110D 、 557、“假上溢”现象会出现在( )中。
A 、循环队列B 、链队列C 、栈D 、顺序队列8、对单链表执行下列程序段,请选出不正确的一项( )。
T=Q 。
While(T->next!=NULL){T->data=T->data*3。
T=T->next 。
} A 、R->data=27B 、Q->data=12C 、H->data=2D 、P->data=39、一个栈的入栈序列是abcde ,则栈的不可能的输出序列是( )。
系(院): 年级: 专业: 班别: 学号: 姓名: 座位号: —————————————————————————————————————————————————————— 密 封 线 内 不 要 答 题∞ 装 订∞ 线 ∞A、edcbaB、decbaC、dceabD、abcde10、在一个链队中,假设F和R分别是队首和队尾指针,则删除一个结点的运算是( )。
A、R=F->next。
B、F=F->next。
C、R=R->next。
D、F=R->next。
11、串是一种特殊的线性表,其特殊性体现在( )。
A、数据元素是一个字符B、可以顺序存储C、可以链接存储D、数据元素可以是多个字符12、设计一个判别表达式中左、右括号是否配对出现的算法,采用( )数据结构最佳。
A、线性表的顺序存储结构B、队列C、线性表的链式存储结构D、栈13、设数组B[1..3,1..5]中的任一元素均占4个单元,从首地址SA=2010开始把数组B按列优先存储,则元素B[2,4]的地址为( )。
A、2042B、2074C、2050D、210814、对稀疏矩阵进行压缩存储是为了( )。
A、便于进行矩阵运算B、节约存储空间C、便于输入和输出D、降低运算的时间复杂度15、下列说法哪个是不正确的:( )。
A、广义表(((a)))的表头是(a)。
B、广义表((a),((b),c),(((d))))长度为3。
C、广义表((a),((b),c),(((d))))深度为4。
D、广义表((a),((b),c),(((d))))的表尾是(((b),c),(((d))))。
二、填空题(每题1分,共10分)1、数据结构是一门研究____________的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。
(非数值计算)2、空间复杂度作为算法所需存储空间的量度,记作____________。
(S(n)=O(f(n)))3、一个顺序表的开始地址是1000,每个元素的长度是8,则第7个元素的存储地址是____________。
(1048)4、在无头结点的单链表中,第1个结点的地址存放在头指针中,其他结点的存储地址存放在____________结点的next域中。
(前驱)5、当程序中同时使用_______ _____个栈时,让它们共享同一向量空间可减少上溢的发生。
(2)6、假设以数组Sq[M]存放循环队列,同时设变量rear和quelen分别指示循环队列中队尾元素的位置和内含的元素个数,则判别队满的条件是____。
(quelen= =M)7、假设每个字符占1个字节,若结点大小为4的链串的存储密度为50%,则其每个指针占____________个字节。
(4)8、在多维数组中,数据元素的存放地址直接可通过地址计算公式计算出。
因此,数组是一种____________存取结构。
(随机)9、矩阵的压缩存储就是为多个相同的非零元素分配_____ ____个存储空间,不为零元素分配空间。
(1)10、广义表是线性表的推广,它们之间的区别在于_____ ____。
(能否使用子表)三、名词解释(每题2分,共10分)1、算法的可行性一个算法是能行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。
(2分)2、数据项有独立含义的数据最小单位,也称域。
(2分)3、顺序表用一组地址连续的存储单元存放一个线性表称为顺序表。
(2分)4、队列队列是限定只能在表的一端进行插入,在表的另一端进行删除的线性表。
(2分)5、空串零个字符的串称为空串。
(2分)2 / 5四、解答题(每题5分,共40分)1、在选择算法时,除首先考虑正确性外,还应考虑哪三点?选用的算法首先应该是"正确"的。
此外,主要考虑如下三点:①执行算法所耗费的时间;(2分)②执行算法所耗费的存储空间,其中主要考虑辅助存储空间;(1分)③算法应易于理解,易于编码,易于调试等等。
(2分)注:酌情给分。
2、请写出在结点a、b之间插入结点x的关键语句,设指针变量P指向结点b,指针变量S指向结点x。
void ins_dulist(JD*p,int x){JD *s。
s=(JD*)malloc(sizeof(JD))。
s->element=x。
(以上1分)s->prior=p->prior。
(1分)p->prior->next=s。
(1分)s->next=p。
(1分)p->prior=s。
(1分)}注:没有函数定义,只写出语句也可;大小写均可。
3、把下列中缀表达式分别表示成后缀表达式。
(1) a+(b*c+d)/e(2) a*b/c+d-e(3) a-b*c+d/e(1)abc*d+e/+ (1分)(2) ab*c/d+e-(2分)(3)abc*-de/+ (2分)4、如何解决顺序队列的假上溢问题?(1)基本思想:把队列设想成环形,让sq[0]接在sq[M-1]之后,若rear+1==M,则令rear=0。
(2分)(2)实现:[入队]sq[rear]=x。
rear=(rear+1)%M。
[出队]x=sq[front%M]。
front=(front+1)%M。
(3分)注:只答出用循环队列解决的给1分。
5、下列算法为简单的串模式匹配算法,请填空完成。
int Index(SString S, SString T, int pos){i=pos。
j=1。
while(i<=S[0]&&j<=T[0]){if(_____ ____) {++i。
++j。
}else{_____ ____。
j=1。
}}if(j>T[0]) return i-T[0]。
else return 0。
}S[i]= =T[j] (2分)i=i-j+2 (3分)6、二维数组M的成员是6个字符(每个字符占一个存储单元)组成的串,行下标i的范围从0到8,列下标的范围从1到10,则存放M至少需要多少个字节?若M按行优先方式存储,元素M[8][5]的起始地址与当M按列优先的方式存储时的什么元素的起始地址一致?540个字节。
(2分)M[3][10] (3分)7、请画出下列稀疏矩阵的十字链表。
3 / 54 / 5⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-2000001000503001 (答案略) 8、设head[p]为求广义表p 的表头函数,tail[p]为求广义表p 的表尾函数,其中[]是函数符号,给出下列广义表的运算结果。
(1) head[tail[(a,b,c)]](2) tail[head[((a,b),(c,d))]] (3) head[head[((a,b),(c,d))]](1) b (1分) (2) (b) (2分) (3) a (2分)五、算法设计题:设顺序表Va 中的数据元素非递减有序。
写一算法将x 插入到顺序表的适当位置上,以保持该表的有序性。
(10分)status insertorderlist(sqlist &a,elemtype x) (1分) {if(a.length==a.listsize) return(overflow)。
(1分) else{i=a.length-1。
(1分) while(i>=0&&x<a.elem[i])i--。
(1分) for(j=a.length-1。
j>=i+1。
j--) (1分) a.elem[j+1]=a.elem[j]。
(2分) a.elem[i+1]=x 。
(2分) a.length++。
(1分) return OK 。
} }5 / 5。