中国科技大学数据结构期终考试试题(20031)

合集下载

数据结构期中试题及参考答案

数据结构期中试题及参考答案

}LNode, *LinkList;
阅读算法 f31,并回答问题;
(1)设节点结构为id score next
,成绩链表 A 和 B 如图所示,画
出执行算法 f31(A,B)后节点 A 所指的链表;
A
1 70
2 40
3 90
4 48
5 56
B
2 38
4 65
题 31 图
(2)减速算法 f31 的功能。 Void f31(LinkList A, LinkList B) { LinkList p,q; p = A->next; q = B->next; while (p && q) { if(p->id < q->id) p = p ->next; else if(p->if > q-> id) q =q –>next; else { if (p->score < 60)
I + = j + lt ;
}
}while (i+lt <= ls && j>=0);
Return k;
}

五、算法设计题(本题 14 分) 34.假设线性表采用顺序存储结构,其类型定义如下:
#define ListSize 100 typedef struct{
int data[ListSize]; int length; }SeqList, *Table; 编写算法,将顺序表 L 中所有值为奇数的元素调整到表的前端。
(1)设 n=10,元素
p=8

存储在 sa[p],写出下标 p 的值;
题 3-1 图

数据结构试卷(期中考试)

数据结构试卷(期中考试)

第页/共 页 《数据结构》期中考试试卷一、选择题(每题2分,共40分)1.组成数据的基本单位是【 】。

A .数据项B .数据类型C .数据元素D .数据变量 2.线性表采用链式存储时,结点的存储地址【 】。

A .必须是不连续的 B .连续与否均可C .必须是连续的D .和头结点的存储地址相连续3. 有一个含头结点的单链表,头指针为head ,判断其是否为空的条件为【 】。

A .head==NULL B . head->next==NULL C .head->next==head D .head!=NULL 4.算法分析的目的是【 】。

A .辨别数据结构的合理性B .评价算法的效率C .研究算法中输入与输出的关系D .鉴别算法的可读性5.已知指针p 所指结点不是尾结点,若在*p 之后插入结点*s ,则应执行下列哪一个操作?【 】。

A. s->next = p ; p-> next = s ;B. s-> next = p-> next ; p-> next = s ;C. s-> next = p-> next ; p = s ;D. p-> next = s ; s-> next = p ; 6.若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可 能出现的出栈序列为【 】。

A .3,2,6,1,4,5B .5,6,4,2,3,1C .1,2,5,3,4,6D .3,4,2,1,6,5 7.一个元素进入队列的时间复杂度是【 】。

A O(1)B O(n)C O(n 2)D O(log 2n) 8.数组A[1..5,1..6]的每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为【 】。

A 1140 B 1145 C 1120 D 1125 9.链表不具有的特点是【 】。

数据结构期中考试题

数据结构期中考试题

一、单项选择题(每小题3分,共30分)1、线性结构是数据元素之间存在的一种_______。

A、一对多关系B、多对多关系C、多对一关系D、一对一关系2、以下数据结构中,哪一个不是线性结构()A.生成树 B. 顺序栈 C. 单链表 D. 循环队列3、设n是偶数,则运行下列程序段的时间复杂度为()。

x=100;for(p=2;p<=n;p++)for(q=2*i;q<=n;q++)x=(x+1)*3;A.O(1) B.O(n) C.O(n2) D.O(lbn)4、若频繁地对线性表进行插入和删除操作,该线性表应该采用——存储结构。

A、散列B、顺序C、链式D、索引5、在非空双向循环链表中由q所指的链结点后面插入一个由p所指的链结点的动作依次为:p->llink=Q;p->rlink=q->rlink;q->rlink=p;_______.(空白处为一条赋值语句) A、q->llink=p B、q->rlink->llink=pC、p->rlink->llink=pD、p->llink->llink=p6、设循环队列的结构是:const int Maxsize=100;typedef int Data Type;typedef struct {Data Type data[Maxsize];Int front, rear;} Queue;若有一个Queue类型的队列Q,试问判断队列满的条件应是下列哪一个语句()A 、Q.front= = Q.rear; B、 Q.front - Q.rear= = Maxsize;C、Q.front + Q.rear= = Maxsize;D、 Q.front= = (Q.rear+1)% Maxsize;7、已知L是一个不带表头的单链表, 在表首插入结点*p的操作是()。

A. p = L; p->next = L;B. p->next = L; p = L;C. p->next = L; L = p;D. L = p; p->next= L;8、下面关于串的叙述中,哪一个是不正确的?( )A.串是字符的有限序列 B.空串是由空格构成的串C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储9、若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为( )。

数据结构期中测试题答案

数据结构期中测试题答案
《数据结构》期中测试
班级:
姓名:
学号:
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力通根1保据过护生管高产线中工敷资艺设料高技试中术卷0资配不料置仅试技可卷术以要是解求指决,机吊对组顶电在层气进配设行置备继不进电规行保范空护高载高中与中资带资料负料试荷试卷下卷问高总题中2体2资配,料置而试时且卷,可调需保控要障试在各验最类;大管对限路设度习备内题进来到行确位调保。整机在使组管其高路在中敷正资设常料过工试程况1卷下中安与,全过要,度加并工强且作看尽下护可1都能关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编.工写保况复护进杂层行设防自备腐动与跨处装接理置地,高线尤中弯其资曲要料半避试径免卷标错调高误试等高方,中案要资,求料编技试5写术卷、重交保电要底护气设。装设备管置备4高线动调、中敷作试电资设,高气料技并中课3试术且资件、卷中拒料中管试包绝试调路验含动卷试敷方线作技设案槽,术技以、来术及管避系架免统等不启多必动项要方高案式中;,资对为料整解试套决卷启高突动中然过语停程文机中电。高气因中课此资件,料中电试管力卷壁高电薄中气、资设接料备口试进不卷行严保调等护试问装工题置作,调并合试且理技进利术行用,过管要关线求运敷电行设力高技保中术护资。装料线置试缆做卷敷到技设准术原确指则灵导:活。在。对分对于线于调盒差试处动过,保程当护中不装高同置中电高资压中料回资试路料卷交试技叉卷术时调问,试题应技,采术作用是为金指调属发试隔电人板机员进一,行变需隔压要开器在处组事理在前;发掌同生握一内图线部纸槽故资内障料,时、强,设电需备回要制路进造须行厂同外家时部出切电具断源高习高中题中资电资料源料试,试卷线卷试缆切验敷除报设从告完而与毕采相,用关要高技进中术行资资检料料查试,和卷并检主且测要了处保解理护现。装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

数据结构期中考试试题及答案

数据结构期中考试试题及答案

一、单项选择题(本题总分 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 )。

数据结构期中考试试卷

数据结构期中考试试卷

数据结构期中考试试卷一、选择题(每题2分,共20分)1. 在数据结构中,线性表是按照什么顺序排列的元素集合?A. 任意顺序B. 无序C. 有序D. 线性2. 链表与数组相比,其主要优点是什么?A. 节省空间B. 访问速度快C. 插入和删除操作灵活D. 内存分配简单3. 栈(Stack)是一种遵循什么原则的数据结构?A. 先进先出B. 先进后出C. 后进先出D. 后进后出4. 哈希表解决冲突最常用的方法是?A. 链接法B. 替换法C. 线性探测法D. 二次探测法5. 树和二叉树的主要区别是什么?A. 树的节点数可以比二叉树多B. 树的节点可以有多个子节点C. 树的节点可以没有子节点D. 树的节点可以有左子节点和右子节点6. 什么是二叉搜索树(BST)?A. 所有左子节点的值小于根节点的值B. 所有右子节点的值大于根节点的值C. 所有左子节点的值大于根节点的值D. A和B都正确7. 图的邻接矩阵表示法适用于哪种类型的图?A. 稠密图B. 稀疏图C. 有向图D. 无向图8. 排序算法的时间复杂度为O(n^2)的算法有哪些?A. 选择排序B. 冒泡排序C. 插入排序D. 所有以上9. 什么是递归?A. 函数调用自身B. 函数调用其他函数C. 循环结构D. 条件语句10. 动态规划主要用于解决什么问题?A. 排序问题B. 查找问题C. 优化问题D. 数据存储问题二、简答题(每题5分,共20分)1. 请简述链表和数组的区别。

2. 解释什么是图的深度优先搜索(DFS)。

3. 什么是二叉堆?请简述其性质。

4. 描述快速排序算法的基本思想。

三、编程题(每题15分,共30分)1. 编写一个函数,实现单链表的反转。

2. 编写一个函数,实现二叉树的前序遍历。

四、算法设计题(每题15分,共30分)1. 设计一个算法,用于在无序数组中找到第k小的元素。

2. 设计一个算法,实现最小生成树的克鲁斯卡尔算法。

五、综合应用题(10分)假设你正在开发一个在线图书管理系统,请设计一个数据结构来存储书籍信息,并实现以下功能:- 添加新书- 删除书籍- 查找特定书籍- 列出所有书籍请提供数据结构的设计思路和相应的伪代码。

《数据结构》期中题库及答案

《数据结构》期中题库及答案

一、判断题: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、在数据结构中,从逻辑上可以把数据结构分为集合、线性结构、树形结构和图状结构,其中树形结构和图状结构合称为非线性结构。

数据结构被形式地定义为二元组(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所指结点是某双向链表的中间结点,试从下列提供的答案中选择合适的语句序列。

数据结构期中考试试题及答案

数据结构期中考试试题及答案

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)如果单词重复出现,则只在链表上保留一个。

数据结构期中试卷

数据结构期中试卷

数据结构期中试卷(考试时间80分钟, 满分100分)一、填空(2*20=40分)1.数据按逻辑结构可分为___________, __________________和__________________。

2.评价一个算法效率的标准是 __________________和__________________。

3、链式存储中结点分为两个域, 分别是______________和__________________。

4.带头结点的单链表为空表的条件是head->link= =NULL。

5.栈的工作特点是__________________, 队列的工作特点是__________________6、判断环形队列队空的条件是head= =tail, 队满的条件是(tail+1)%MAXN= =head。

7、在顺序存储的线性表中插入、删除一个结点平均移动个结点n/2。

8、有一个400项的表, 若用分块查找法, 则分成____20___块最好。

9、单链表中在p结点后插入q结点的语句为_q->link=p->link,p->link=q。

10、单链表中删除p结点后q结点的语句为p->link=q->link,free(q)。

11.判断带头结点的的环形链表为空表的条件为____head->link= =head____________。

12.二分查找的前提条件是按关键字有序, 分块查找的前提条件是块间有序, 块内有序或无序。

13、广义表中元素若为数据元素则被称为_________, 若为广义表则被称为________________。

二、判断(1*10=10分)1.链式存储结构优于顺序存储结构。

( F )2.顺序存储可实现随机存取。

( T )3.对于链表中元素逻辑相邻则物理也相邻。

( F )4.把中缀表达式转换为后缀表达式时应用的是队列。

( F )5.队列是插入、删除限制在表的两端的线性表。

数据结构期中考试答案解析

数据结构期中考试答案解析

数据结构期中试卷及答案解析考试说明考试说明:考察前五章小题,难度接近真题。

满分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。

数据结构期中考试答案

数据结构期中考试答案

9. 在 单 链 表 L 中 , 指 针 p 所 指 结 点 有 后 继 结 点 的 条 件 是 :
__(14)p->next!=NULL

10. 串是有 n(n>=0)个字符组成的有限序列;在 C 语言里用 (15)数组
存储串,并在串末尾加上 (16) ‘\0’ 作为串的结束标志。
11. 串的链式存储结构包括 (17)单字符结点链 和 (18)块 链。 12. 稀疏矩阵的压缩存储一般采用 (19)三元组 顺序表。 13. 递归算法直接或者间接调用了 (20)函数本身 。 二、 综合题(总分 60) 1.设计一数据结构,用来表示某一银行储户的基本信息: 账号、姓名、开
9. rear 是指向以循环链表表示的队列的队尾指针,EnLQueue 函数实现把 x 插入到队尾
的操作。DeLQueue 函数实现删除队头元素并赋给 x 的操作。根据题意按标号把合适的
内容填写到算法后面相应标号的位置。(队列元素的数据类型为 ElemType)【6 分】 void EnLQueue(ListNode *rear, ElemType x)
6. 在单链表中设置头结点的作用是_(9)使得删除插入等操作处理方法
相同
7. 栈是一种特殊的线性表,允许插入和删除操作的一端称为 (10)栈
顶 ,不允许插入和删除操作的一端称为 (11)栈底 。
8. 在顺序循环列队中,队空标志为____(12_cou(13)_Q->rear==Q->front&&count>0_________。
《数据结构》期中考试试卷
一、 填空题(每空 1 分,共 20 分)
1. 数据的物理结构包括 (1)顺序 的表示和 (2)链式 的表示。

数据结构期中考试

数据结构期中考试
typedef struct node {
DataType data;
Structnode *next;
} LinkNode,* LinkList;
1.编写算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。
2.编写算法,在一个头指针为head且带头结点的单链表中,删除所有结点数据域值为x的结点。函数原型为:LinkList delnode (LinkList head,DataType x)
1.阅读下列算法,并回答问题:
(1)假设L=(3,7,7,11,20,20,20,51,51),写出执行函数f1(&L)后的L;
(2)简述f1的功能。
void f1(SeqList*L)
{∥L为非空的有序表
int i=1,k=0;
while(i<L->length)

if(L->data[i]!=L->data[k])
9.已知三对角矩阵A[10][10]的每个元素占2个单元,现将其三条对角线上的元素逐行存储在起始地址为1000的连续的内存单元中,则元素A[6][7]的地址为______。
10.已知广义表A=(x,((a,b),c,)),函数head(head(tail(A)))的运算结果是______。
三、算法阅读题(本大题共3小题,每小题10分,共30分)
typedeBiblioteka structnode{char data[NodeSize];
struct node*next;
}LinkStrNode;
如果每个字符占1个字节,指针占2个字节,该链串的存储密度为()
A.1/3B.1/2
C.2/3D.3/4
9.若一个栈以向量V[1..n]存储,初始栈顶指针top为n+l,则x进栈的正确操作是()

数据结构期中试卷

数据结构期中试卷

数据结构期中试卷一、选择题(每个选择2分,共 20分)请将正确选项的编号写在题后的括号中。

1.用链接方式存储的队列,在进行插入运算时( ).①.仅修改头指针②头、尾指针都要修改③仅修改尾指针④头、尾指针可能都要修改2.带头结点的单链表first为空的判定条件是:()①. first == NULL; ②. first->link == NULL;③first->link == first; ④. first != NULL;3若某线性表中最常用的操作是取第i 个元素和找第i个元素的前趋元素,则采用()存储方式最节省时间。

①单链表②双链表③单向循环④顺序表4将长度为n的单链表连接在长度为m的单链表之后,其算法的时间复杂度为( )①.O(1) ②.O(m)③.O(n) ④.O(m+n)5设矩阵A(a ij,l≤i,j≤ 10)的元素满足:a ij≠0(i≥j, l≤i, j≤ 10)a ij=0 (i<j, l≤i, j≤ 10)现将A的所有非0元素以行序为主序存放在首地址为2000的存储区域中,每个元素占有4个单元,则元素A[9][5]的首址为①2340 ②2336 ③2164 ④21606如果以链表作为栈的存储结构,则退栈操作时()①必须判别栈是否满②对栈不作任何判别③必须判别栈是否空④判别栈元素的类型7设数组Data[0..m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为()①front=front+1 ②front=(front+1)% m③rear=(rear+1)%m ④front=(front+1)%(m+1)8.在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为()。

①O(n) ②. O(n/2) ③. O(1) ④. O(n2)9.已知栈的最大容量为4。

若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为()①.5,4,3,2,1,6 ②.2,3,5,6,1,4③.3,2,5,4,1,6 ④.1,4,6,5,2,310.假设以三元组表表示稀疏矩阵,则与如图所示三元组表对应的4×5的稀疏矩阵是(注:矩阵的行列下标均从1开始)()①.⎪⎪⎪⎪⎪⎭⎫⎝⎛--00405000000000706080 ②.⎪⎪⎪⎪⎪⎭⎫⎝⎛--00000004053000706080 ③.⎪⎪⎪⎪⎪⎭⎫⎝⎛--00405000073000006080 ④.⎪⎪⎪⎪⎪⎭⎫⎝⎛--00000304050000706080 二、判断题(每题2分,共10分)1.数组是一种复杂的数据结构,数组元素之间的关系既不是线性的也不是树形的。

数据结构期中试卷参考答案

数据结构期中试卷参考答案

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编码为前缀码,它根据结点出现的频度由低到高编码,则可以使频度较高的结点有尽可能短的编码,从而使整个发送文件的总编码长度尽可能短。

中国科技大学数据结构期终考试试题20031

中国科技大学数据结构期终考试试题20031

中国科技大学数据结构期终考试试题(2003.1)学号:__________ 姓名: _________ 成绩:________.一、填空题(24分,每空1.5分)1.假设一循环队列用数组A[0..m-1]存放其元素值,已知其头尾指针分别是front(指向队头元素)和rear(指向队尾元素的下一个),则当前队列中元素的个数是。

2.栈和队列均是运算受限的线性表,栈的特点是,队列的特点是。

3.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi(1<i<n+1)为。

4.高度为h(h>=1)的二叉哈夫曼树中,至少有个结点,至多有_____________个结点。

5.具有5个结点的不同形态的二叉树有_________棵,具有5个结点的不同形态的树有__________棵。

6.在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A。

并已知插入前,A的左孩子的平衡因子为-1,右孩子的平衡因子为0,则应做________型调整以使其平衡。

7.高度为5的完全二叉树中至少有_____个2度结点,至多有__ 个结点有左孩子。

8.具有8个顶点的无向图至少应有__ 条边才能确保它是一个连通图,至多有__ 条边才能保证它仍是一个非连通图。

9.判断一个有向图是否存在回路除了可以用拓扑排序方法外,还可以用_____________________________方法。

10.广义表(((a), ()), ((a, b) , a), b)的表头是__________ ,表尾是_____________________。

二、解答题(41分)1.试推导含n个结点的完全k叉树的深度H。

(5分)2.某二叉树的先序遍历结点访问顺序是abdgcefh ,中序遍历的结点访问顺序是dgbaechf ,试写出其后序遍历的结点访问顺序,并画出该二叉树。

(8分)3.画出右图所示无向图中的最小生成树和深度优先生成树(从A 出发)。

数据结构期中复习题--完整版!

数据结构期中复习题--完整版!
(1)用最少时间在表中查找数值为x的元素;
(2)若找到将其与后继元中并使表中元素仍递增有序
3.已知一个带有头结点的单链表,假设该链表只给出了头指针L,在不改变链表的前提下,
请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数),若查找成功,算法输出该结点的data域的值,并返回0。要求:
A.O(1) B.O(n) C.O(m) D.O(m+n)
12.将两个各有n1个n2个元素的有序表(递增)归并成一个有序表,仍保持其递增顺序,则最少的比较次数是()。
A.n1 B.n2 C.n1+n2-1 D.min(n1,n2)
13.已知L是带头结点的单链表,结点p既不是首结点(第一个结点),也不是尾结点,删除p结点的直接后继结点的语句序列是()
10.已知L1、L2分别为两个单循环链表的头结点指针,m、n分别为L1、L2表中数据结点个数。要求设计一个算法,用最快速度将两表合并成一个带头结点的单循环链表。
11.已知不带头结点的线性表list,链表中结点构造为(data,next),其中data为数据域,next为指针域。请写一算法,将该链表按结点数据域的值的大小从小到大重新链接。要求链接过程中不得使用除该链表以外的任何链接点空间。
2.【答案】D
本题程序中每次循环将y的值增加1,然后比较n与y+1的平方大小,所以总共要进行根号n次比较。
3.【答案】D
在线性表的第1至第n个位置插入一个数据元素显然是允许的,紧挨在线性表最后那个数据元素后面插入一个数据元素也是允许的,因此,i的合法值应该是1≦i≦n+1。
4.【答案】C
只有删除非空线性表的第1至第n个数据元素才是可能的,因此,i的合法值应1≦i≦n。

数据结构 期中试卷

数据结构 期中试卷

《数据结构》期中试卷一、填空题(每空2分,共44分)1、数据结构可分为_线性结构_,__树形结构___和__图形结构__。

2、算法的效率包括时间与空间两个方面,分别称为_时间复杂度_与__空间复杂度_。

3、向一个长度为n的线性表的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动 _n-i_个元素。

4、线性表的存储结构常用的有_顺序存储_、_链式存储___两种。

5、、队列的特性是_先进先出_,而栈的特性是_后进先出_。

6、折半查找算法的时间复杂度为:_____________;顺序查找算法的时间复杂度为:___O(N)__________;7、链式存储中结点分为两个域,分别是__数据域__和__ 指针域__。

8、广义表A=((a1),(a2,……,an))的表头为____(a1)_____,表尾为__(a2,……,an) __,用表头和表尾描述a2=_ (head(head(tail(A)))__。

9、构造散列函数的方法通常有_平方取中法_,_移位法__,___数字分析法__,__除留余数法__四种。

10、已知线性表的起始存储位置为b,表中任意一个元素所占用的存储单元为k 个,则表中任意一元素ai的存储位置LOC(ai)为__b+(i-1)*k____________________。

二、选择题(每题3 分,共18分)1、线性表是一个( A )A、有限序列,可以为空B、有限序列,不能为空C、无限序列,可以为空D、无限序列,不能为空2、线性表采用链式存储时,其地址( D )A、必须是连续的B、部分地址必须是连续的C、一定是不连续的D、连续与否均可以3、已知某顺序线性表有20个元素,其首地址为20,每个元素占2个存储空间,则第15个元素的存储位置为( D )A、35B、40C、45D、484、进栈顺序为ABC,以下不可能的出栈顺序是( C )A、ABCB、BACC、CABD、CBA5、采用折半查找的前提是( D )A、线性数据集合B、元素分成块C、用二叉排序树存储D、按关键字有序6、索引顺序查找又称分块查找,它要求索引表必须( A ),各子块必须“按块有序”。

数据结构期中测试

数据结构期中测试

《数据结构》期中测试试题一、名词解释1.数据结构2.顺序表3.栈的链式存储结构4.顺序队列二、判断题1.数据元素是最小项。

2.算法就是程序。

3.从逻辑关系上讲,数据结构主要分为两大类:线性结构和非线性结构。

4.线性表若采用链式存储表示时,所有存储结点之间的地址可连续、可不连续。

5.在顺序表中,逻辑上相邻的元素在物理位置上不一定相邻。

6.栈和队列都是特殊的线性表。

7.栈和队列都将插入和删除操作限制在表的端点处进行。

8.只允许在表的一端进行插入和删除操作的线性表称为栈。

9.只要栈不空,就能任意删除栈的元素。

10.对采用链式存储结构的栈进行操作不必判断溢出。

三、填空题1.算法的一个特性是______,即针对一组确定的输入,算法应始终得出一组确定的结果。

2.数据是_____的载体,它能够被计算机程序识别、______和加工处理。

3.数据结构包括_____、______和数据的运算三方面。

4.数据结构的逻辑结构包括______结构和______结构两大类。

5.线性表采用______存储结构时,其存储地址通常必须是连续的,采用_____存储结构时,其存储地址连续与否均可以。

6.已知顺序表长度为n,在i位置插入一个元素需要移动_____个元素,把i位置的元素删除需要移动______个元素。

7.已知单向链表head,在p指针所指向的结果后插入一个元素使用的操作为____。

8.栈和队列的逻辑结构都是______结构。

9.当栈的最大长度难以估计时,栈最好采用______存储结构。

10.在具体的程序设计过程中,栈的顺序存储结构一般是利用一个____描述的,同时还要定义一个整形变量来______。

四、综合题1.计算算法的时间复杂度2.编写算法for(i=0;i<n;i++) (1)编写算法实现将任意十进制整数转换为非十进制数。

for(j=0;j<n;j++) (2)编写算法求单链表的长度。

a++;。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中国科技大学数据结构期终考试试题(2003.1)
学号:__________ 姓名: _________ 成绩:________.
一、填空题(24分,每空1.5分)
1.假设一循环队列用数组A[0..m-1]存放其元素值,已知其头尾指针分别是front(指向队头元素)和rear(指向队尾元素的下一个),则当前队列中元素的个数是。

2.栈和队列均是运算受限的线性表,栈的特点是,队列的特点是。

3.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi(1<i<n+1)为。

4.高度为h(h>=1)的二叉哈夫曼树中,至少有个结点,至多有_____________个结点。

5.具有5个结点的不同形态的二叉树有_________棵,具有5个结点的不同形态的树有__________棵。

6.在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A。

并已知插入前,A的左孩子的平衡因子为-1,右孩子的平衡因子为0,则应做________型调整以使其平衡。

7.高度为5的完全二叉树中至少有_____个2度结点,至多有__ 个结点有左孩子。

8.具有8个顶点的无向图至少应有__ 条边才能确保它是一个连通图,至多有__ 条边才能保证它仍是一个非连通图。

9.判断一个有向图是否存在回路除了可以用拓扑排序方法外,还可以用_____________________________方法。

10.广义表(((a), ()), ((a, b) , a), b)的表头是__________ ,表尾是_____________________。

二、解答题(41分)
1.试推导含n个结点的完全k叉树的深度H。

(5分)
2.某二叉树的先序遍历结点访问顺序是abdgcefh ,中序遍历的结点访问顺序是dgbaechf ,试写出其后序遍历的结点访问顺序,并画出该二叉树。

(8分)
3.画出右图所示无向图中的最小生成树和深度优先生成树(从A 出发)。

(10分)
4.画出关键字插入序列为
[ 45, 24, 53, 12, 30, 6, 16, 18]
的二叉排序树以及在此基础上删除关键字24之后的二叉排序树。

(10分)
5.已知字母A 、B 、C 、D 、E 、F 、G 出现的概率分别是0.03, 0.02, 0.10, 0.12, 0.15, 0.28, 0.30,试为其设计哈夫曼编码。

(8分)
三、算法设计(35分)
1.现有一大块空闲区(简称被管理内存区)可用于动态存储管理,请按如下管理模式为其编写初始化xinit 、分配xalloc 和释放xfree 算法。

(20分) 1)系统为被管理内存区引入一个目录信息,其信息结构定义如下:
typedef struct area{ char *startptr; // 被管理内存区的起始地址 int size;
// 被管理内存区的大小
char
*curptr;
// 被管理内存区当前可分配的起始地址 }Area;
Area areaInfo;
// 当前的被管理内存区的目录信息
2)在实际运行中,被管理内存区或者是一整块空闲区;或者被分隔成两部分:前半部为已分配区(由多次分配的区间顺序组成),后半部为空闲区(起始位置存放在areaInfo.curptr 中)。

3)引入一个双向循环链表(已分配目录表,其结点空间通过malloc 获得,不占用被管理内存区)来记载已分配区中的各次分配情况,每一次分配对应于表中的一个结点,该结点记载相应分配区的目录信息,存储结构如下:
typedef struct node{ struct node *prev, *next; // 直接前驱结点和直接后继结点的指针 char *startptr; // 该次分配的内存区起始地址 int size; // 该次分配的内存区的大小(字节数) char flag; // 0-在用,1-不再使用,但空间尚未回收
A
B C
D E H
F G
4 5 3 4
5 5
4 4
2 2
3 1
}Node, *DLink;
当有分配请求时,根据所需分配的size,从areaInfo.curptr指向的空闲区中去分配。

若当前被管理内存区所剩的空闲空间不够,则返回NULL;否则修改areaInfo.curptr,在已分配目录表的表尾增加一个记载当前被分配区的目录信息的结点(flag置为0),并返回当前被分配区的起始地址。

当要释放某内存区时,若该内存区不是最近分配的,则将该内存区对应的目录信息结点(该结点显然不是表尾结点)的flag置为1。

否则回收该区域,释放对应的目录结点;若被回收区域前面的分配区也已经不再使用,则也一并回收。

2.试写一个算法,在以邻接矩阵方式存储的有向图G中求顶点vi到顶点vj的长度为k的简单路径数。

(15分)。

相关文档
最新文档