北京大学数据结构与算法2017-2018数算期中考试题考试试题(Final)
数据结构期中考试试卷

数据结构期中考试试卷一、选择题(每题2分,共20分)1. 在数据结构中,线性结构的特点是什么?A. 元素之间存在一对一关系B. 元素之间存在一对多关系C. 元素之间存在多对多关系D. 元素之间存在一对一或多对多关系2. 以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序3. 在二叉树中,度为2的节点最多有多少个子节点?A. 1B. 2C. 3D. 44. 哈希表解决冲突的方法不包括以下哪一项?A. 分离链接法B. 开放寻址法C. 链地址法D. 树形结构法5. 以下哪个不是图的遍历算法?A. 深度优先搜索B. 广度优先搜索C. 动态规划D. 克鲁斯卡尔算法6. 栈的特点是?A. 后进先出B. 先进后出C. 先进先出D. 后进后出7. 以下哪个不是二叉搜索树的性质?A. 左子树上所有节点的值小于它的根节点的值B. 右子树上所有节点的值大于它的根节点的值C. 左子树和右子树都是二叉搜索树D. 所有节点的值都相等8. 在数据库中,索引的作用是什么?A. 增加数据存储空间B. 提高数据检索效率C. 降低数据插入速度D. 减少数据存储量9. 以下哪个不是图的存储结构?A. 邻接矩阵B. 邻接表C. 树形结构D. 边列表10. 递归算法的基本思想是什么?A. 将问题分解为更小的子问题B. 重复执行相同的操作C. 将问题转化为非递归形式D. 避免使用循环结构二、填空题(每题2分,共20分)1. 在数据结构中,______是一种特殊的线性表,只允许在一端进行插入和删除操作。
2. 排序算法中,______排序的时间复杂度为O(n^2),适用于小规模数据的排序。
3. 在图的表示中,______矩阵可以有效地表示稠密图。
4. 哈希表中,______是指两个关键字通过哈希函数得到同一个哈希地址。
5. 栈和队列的主要区别在于,栈是______,而队列是先进先出。
6. 二叉树的遍历方式包括前序遍历、中序遍历和______遍历。
数据结构试卷(期中考试)

第页/共 页 《数据结构》期中考试试卷一、选择题(每题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.链表不具有的特点是【 】。
《算法与数据结构》-期中试卷课件

《算法与数据结构》课程期中试卷一、判断题(本大题共10小题。
每小题1分,共10分。
) (注意:将判断结果填入以下表格中。
对的打√,错的打×。
)1. 算法分析的目的是研究算法中输入和输出的关系。
( 错 )2. 可以随机访问任一元素是链表具有的特点。
( 错)3. 用一维数组存储一棵完全二叉树是有效的存储方法。
(对 )4. 在队列第i 个元素之后插入一个元素不是队列的基本运算。
( 错 )5. Tail (Tail (Head (((a,b),(c,d)))))= (b)。
( )6. 如果一个叶子是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序遍历下的最后一个结点。
( 错)比如只有根节点和左子树的特殊情况。
7. 由权值分别为3, 8, 6, 2的叶子生成一棵哈夫曼树,它的带权路径长度为35。
(对 ) 带权路径长度=1*8+2*6+3*3+3*2=35(书P146)8. Head (Tail (Head (((a,b),(c,d)))))= (b)。
( )9. 数据结构包括数据间的逻辑结构、数据的存储方式和数据的运算三个方面。
(对 )逻辑结构、存储结构和数据的操作(运算)三个方面10. 线性的数据结构可以顺序存储,也可以链接存储;非线性的数据结构只能链接存储。
(错 ) 比如完全二叉树。
二、单项选择题(本大题共15小题。
每小题2分,共30分。
)(注意:以下各题只有一个正确答案,请将选择的结果填入以下表格中。
) 1. 下面程序段的时间复杂度为________。
s=0;for (i=1;i<n ;i++) for (j=1;j<i ;j++) s += i*j ;A. O(1)B. O(logn)C. O(n)D. O(n 2)[D] 就是s= s +i*j ;运算次数 ,T=(1+2+3…………n)=n(n+1)/2,为n^22. 以下数据结构中哪一个是线性结构_ ___。
A. 有向图B. 线索二叉树C. 队列D. 二叉排序树[C]堆栈,线性表(循序表,链表),队列都是线性结构。
《数据结构》期终考查试卷(A卷)和答案

《数据结构》期终考查试卷(A 卷)适用专业:一、单项选择题(每题2分,共40分)1、.算法的时间复杂度是指( )A .执行算法程序所需要的时间B .算法程序的长度C .算法执行过程中所需要的基本运算次数D .算法程序中的指令条数2、以下说法正确的是A .线性结构的数据元素之间存在一对多的线性关系B .图形结构和树型结构是线性结构C .时间复杂度是用算法执行过程中所需要的基本运算次数来度量D .时间复杂度总是与空间复杂度成正比3、在一个单链表HL 中,若要删除由指针q 所指向结点的后继结点,则执行( )。
A .p = q->next ; p->next = q->next;B .p = q->next ; q->next = p;C .q->next = q->next->next; q->next = q;D . p = q->next ; q->next = p->next 4、下列叙述中正确的是( ) A .线性表是线性结构 B. 栈与队列是非线性结构 C .线性链表是非线性结构 D. 二叉树是线性结构 5、图的广度优先搜索类似于树的( )次序遍历。
A .先根 B .中根 C .后根 D .层次 6、下列存储形式中,( )不是树的存储形式。
A、双亲表示法B、左子女右兄弟表示法C、广义表表示法D、顺序表示法7、栈的插入和删除操作都在()进行。
A、栈顶B、栈底C、任意位置D、指定位置8、按照“后进先出”原则组织数据的数据结构是A.队列B.栈C.双向链表D.二叉树9、假定一个链式队列的队头和队尾指针分别为front和rear,则判断队空的条件为( )。
A.front==NULL B.front!=NULL C.rear!=NULL D.front= =rear10、关于字符串的说法中,错误的是A、字符串是零个或多个字符组成的有限序列B、串中字符的个数称为串的长度C、长度为零的串称为空串D、由空格组成的字符串称为空串11、有关二叉树的下列说法正确的是A、任何一棵二叉树中至少有一个结点的度为2B、一棵二叉树的度可以小于2C、二叉树中任何一个结点的度都为2D、二叉树的度为212、对如下二叉树进行后序遍历的结果为A.ABCDEF B.DBEAFC C.ABDECF D.DEBFCA13、求图的最小生成树采用的算法是A.普里姆算法和克鲁斯卡尔算法B.迪杰斯特拉算法C.弗洛伊德算法D.深度优先算法14、设G1=(V1,E1)和G2=(V2,E2)为两个图,如果V2包含V1,E2包含E1,则称( )。
数据结构期中考试试卷参考答案

数据结构期中考试试卷参考答案1徐州师范大学期中试卷课程名称:数据结构与算法一、单项选择1. B2. A3. B4. C 5. A 6. D 7. C 8. C 9. B 10. D 11. A 12. B 13. C 14. D 15. A 16. C 17. A 18. A 19. D 20. B二、名词解释1. 数据:是所有能被输入到计算机中,且能被计算机处理的符号的集合。
它是计算机操作的对象的总称,也是计算机处理的信息的某种特定的符号表示形式。
2. 算法:通常把具体存储结构上的操作实现步骤或过程称为算法。
3. 递归:在定义一个过程或函数时出现调用本过程或本函数的成分,称之为递归4. 时间复杂度:通常把算法中包含基本运算次数的多少称为算法的时间复杂度,也就是说,一个算法的时间复杂度是指该算法的基本运算次数。
5. 数组:数组是n(n >1)个相同类型数据元素a1,a2,…,an 构成的有限序列,且该有限序列存储在一块地址连续的内存单元中。
三、填空题(每题1分,共10分)1.有穷性、确定性、可行性、输入、输出2. n/2 插入或删除位置3. __O(1) __。
4. 以行序为主序和以列序为主序两种方式。
5. 数据数据元素。
6.元素之间逻辑关系的信息7. 长度各个对应位置上的字符 8.一定不一定。
9.头指针头结点的指针.直接前驱结点指针。
10.数据元素及其关系四、简答题1.答案:(1)结点存储密度。
顺序:结点中只有自身信息域,没有链接信息域,故存储密度大;链式:结点中除自身信息外,还有表示连接信息的指针域,存储密度小。
(2)随机存取。
顺序:可随机访问,直接存取第i 个结点信息;链式:不能随机访问.(3)插入和删除。
顺序:插入、删除,会引起大量结点的移动。
链式:插入、删除灵活方便,不必移动结点,只要改变结点中的指针值即可。
(4)预先分配存储单元.顺序:按最大预分配,存储空间利用率不高;链式:不需要预分配空间,所以存储空间利用率高。
北京大学数据结构与算法2017春季《数据结构与算法A》期末考试题考试试卷

北京大学信息科学技术学院考试试卷考试科目:数据结构与算法A 姓名:学号:考试时间:2017 年1 月4 日任课教师:以下为试题和答题纸,共页。
得分一、选择填空题(每空1分,共11分)(答案写在答题纸上)1.G是一个非连通无向图,共有21条边,则图G至少有个顶点。
2.对于一个包含N(N>1)个顶点的图,假定任意两点间最多只有一条边,那么下列哪些情况是错误的_________。
A.如果是有向图,则其任何一个极大强连通子图都无法进行拓扑排序。
B.如果是无向连通图,则其最小生成树一定不包括权重最大的边。
C.如果是无向连通图,假设所有边的权重均为正值,Dijkstra算法给出的生成树不一定是最小生成树,但是与该图的任何一个最小生成树都至少有一条相同边。
3.有向图G如下图所示:(1)写出所有可能的拓扑序列:。
(2)若要使该图只有惟一的拓扑序列,则可以添加一条弧(请写出所有弧)。
4.在快速排序中,定义一次平分的划分为“幸运的划分”,而一次划分如果有一边为空则是“不幸的划分”。
假设划分的过程总是“幸运”和“不幸”交替的,则该快速排序的时间复杂性为。
5.具有10000个关键码的16阶B树的查找路径长度(从根到叶节点访问B树索引块的次数)不会小于。
6.设有8个初始归并段,其长度分别为32,46,56,64,20,87,70,40;进行3路归并排序,所构造的最佳归并树对应的总读写次数为。
7.A[N][N]是对称矩阵,现将下三角矩阵按行存储到一维数组T[N(N+1)/2]中(包括对角线),则对任一上三角元素A[i][j]其对应值(0 <= i <= j < N)在T[k]中的下标k是。
8.在一棵空A VL树中,顺序插入如下关键码:{5, 9, 4, 2, 1, 3, 8},请问全部插入后,在等概率下查找成功的平均检索长度为。
9.已知广义表C=(c, (d, A), B, e),则广义表C的深度为,tail(head(tail(C)))的运算结果为。
北京大学数据结构与算法2016-2017数据结构与算法final-ans

北京大学信息科学技术学院考试试卷考试科目:数据结构与算法A 姓名:学号:考试时间: 2016 年 1 月 6 日任课教师:以下为试题和答题纸(答案写在答题纸上),包括本页共 6 页。
第一题填空题(每空1分,共8分)1.设无向图G = (V,E)中V={1, 2, 3, 4, 5, 6, 7},E={(1,2), (1,3), (2,3), (4,5), (3,6),(4,7), (5,7)}。
则图G包含的不同生成森林的个数为_____9____。
注释:其中若两个生成森林的边集不同,则认为它们是不同的生成森林。
2.若对下面的无向图以1为起点运行单源最短路径的Dijkstra算法,则在Dijkstra算法的过程中,每一步依次被选出的顶点依次是_1,2,4,3,7,5,6,8,9,10___。
若忽略边权,以6为起点进行一次广度优先周游,将得到一棵广度优先搜索的生成树。
设仅包含一个结点的树高度为1,则该生成树的高度为_3_,树的最深层结点集合为_1,5,7,10__。
第一空回答2,4,3,7,5,6,8,9,10也算对3.用某种排序方法对序列(25, 84, 21, 47, 15, 27, 68, 35, 20)进行排序时,若序列的变化情况如下,则所采用的排序方法为__快速排序__。
25, 84, 21, 47, 15, 27, 68, 35, 2020, 15, 21, 25, 47, 27, 68, 35, 8415, 20, 21, 25, 35, 27, 47, 68, 8415, 20, 21, 25, 27, 35, 47, 68, 844.假设Shell排序的增量序列是(2k, 2k-1, … , 2, 1),其中k=[log2 n]。
若待排序序列是正序的(已经排好)或逆序的,则Shell排序的时间复杂度分别是__O(nlogn)_、O(nlogn)_。
各0.5分5.设输入的关键码满足k1>k2>…>k n,缓冲区大小为m。
北京大学数据结构与算法2016-2017数据结构期末考试题试卷答案版

2) 下一记录放到第 11 个槽和第 7 个槽中的概率分别是多少? 下一条记录放在第 11 个槽中的概率是 2/13 放到第 7 个槽中的概率是 9/13
学校倡议所有考生以北京大学学生的荣誉与诚信答卷,共同维护北京大 学的学术声誉。
以下为试题和答题纸,共 页。
得分 一、选择填空题(每空 1 分,共 11 分)(答案写在答题纸上)
1. G 是一个非连通无向图,共有 21 条边,则图 G 至少有 8 个顶点。 2. 对于一个包含 N(N>1)个顶点的图,假定任意两点间最多只有一条边,
7. A[N][N]是对称矩阵,现将下三角矩阵按行存储到一维数组 T[N(N+1)/2]中
(包括对角线),则对任一上三角元素 A[i][j]其对应值(0 <= i <= j < N)在
T[k]中的下标 k 是 j(j+1)/2+i
。
8. 在一棵空 AVL 树中,顺序插入如下关键码:{5, 9, 4, 2, 1, 3, 8},请问全部 插入后,在等概率下查找成功的平均检索长度为 17/7 。
9. 已知广义表 C=(c, (d, A), B, e),则广义表 C 的深度为 2
,
tail(head(tail(C)))的运算结果为 (A) 。
得分 二、简答辨析题(每题 3 分,共 15 分)
1. 如果要找出一个具有 n 个元素集合中的第 k (1≤k≤n)个最小元素,所学过的 排序方法中哪种最适合?给出实现的基本思想。 答案:在具有 n 个元素的集合中找第 k 个最小元素,应使用快速排序算法。 其基本思想如下:设 n 个元素的集合用一维数组表示,其第一个元素的下 标为 1,最后一个元素下标为 n。以第一个元素为“枢轴”,经过快速排序的 一次划分,找到“枢轴”的位置 i,若 i = k,则该位置的元素下标为 n;若 i > k 则在 1 至 i-1 间继续进行快速排序的划分;若 i < k 则在 i+1 至 n 间继续 进行快速排序的划分。这种划分一直进行到 i = k 为止,第 i 位置上的元素 就是第 k 个最小元素。
数据结构-《数据结构与算法》试卷及答案【考试试卷答案】

《数据结构与算法》试卷A适用专业: 考试日期: 闭卷 所需时间:120分钟 总分:100分一、 选择题(每题1分, 共20题,总共20分)。
1.算法分析的目的是( ) A .辨别数据结构的合理性 B .评价算法的效率C .研究算法中输入与输出的关系D .鉴别算法的可读性2.在一个单链表HL 中,若要在当前由指针p 指向的结点后面插入一个由q 指向的结点,则执行如下( )语句序列。
A. p=q; p->next=q;B. p->next=q; q->next=p;C. p->next=q->next; p=q;D. q->next=p->next; p->next=q; 3.以下哪一个不是队列的基本运算?( )A. 在队列第i 个元素之后插入一个元素B. 从队头删除一个元素C. 判断一个队列是否为空D.读取队头元素的值4.由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为( )。
A . 11 B.35 C. 19 D. 535.如下图所示的4棵二叉树中,( )不是完全二叉树。
6.下面关于线性表的叙述中,错误的是哪一个?( )A .线性表采用顺序存储,必须占用一片连续的存储单元。
B .线性表采用顺序存储,便于进行插入和删除操作。
C .线性表采用链接存储,不必占用一片连续的存储单元。
D .线性表采用链接存储,便于插入和删除操作。
7.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。
A .单链表B .仅有头指针的单循环链表C .双链表D .仅有尾指针的单循环链表8. 若长度为n 的线性表采用顺序存储结构,在其第i 个位置插入一个新元素的算法的时间复杂度为( )(1<=i<=n+1)。
A. O(0)B. O(1)C. O(n)D. O(n 2)9. 若已知一个栈的入栈序列是1,2,3,…,n ,其输出序列为p 1,p 2,p 3,…,p N ,若p N 是n ,则p i 是( )。
数据结构期中考试答案解析

数据结构期中试卷及答案解析考试说明考试说明:考察前五章小题,难度接近真题。
满分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。
数据结构与算法考试题+答案

数据结构与算法考试题+答案一、单选题(共100题,每题1分,共100分)1.Excel工作表D列保存了18位身份证号码信息,为了保护个人隐私,需将身份证信息的第9到12位用“*”表示,以D2单元格为例,最优的操作方法是:A、=MID(D2,1,8)+"****"+MID(D2,13,6)B、=CONCATENATE(MID(D2,1,8),"****",MID(D.13,6))C、=REPLACE(D2,9,4,"****")D、=MID(D2,9,4,"****")正确答案:C2.小李正在Word中编辑一篇包含12个章节的书稿,他希望每一章都能自动从新的一页开始,最优的操作方法是:A、在每一章最后连续按回车键Enter,直到下一页面开始处B、将每一章标题指定为标题样式,并将样式的段落格式修改为“段前分页”C、在每一章最后插入分页符D、将每一章标题的段落格式设为“段前分页”正确答案:B3.在Excel2010中,要在某个单元格区域的所有空单元格中填入相同的内容,最佳的操作方法是:A、逐一选中这些空单元格,并输入相同的内容B、按住Ctrl键,同时选中这些空单元格,然后在活动单元格中输入所需内容,并使用Ctrl+Enter组合键在其他空单元格中填入相同内容C、选中包含空单元格的区域,并定位到空值,然后在活动单元格中输入所需内容,并使用正确答案:C4.建立表示学生选修课程活动的实体联系模型,其中的两个实体分别是A、课程和成绩B、学生和学号C、课程和课程号D、学生和课程正确答案:D5.PowerPoint2010演示文稿的首张幻灯片为标题版式幻灯片,要从第二张幻灯片开始插入编号,并使编号值从1开始,正确的方法是:A、直接插入幻灯片编号,并勾选“标题幻灯片中不显示”复选框B、从第二张幻灯片开始,依次插入文本框,并在其中输入正确的幻灯片编号值C、首先在“页面设置”对话框中,将幻灯片编号的起始值设置为0,然后插入幻灯片编号,并勾选“标题幻灯片中不显示”复选框D、首先在“页面设置”对话框中,将幻灯片正确答案:C6.JAVA属于:A、操作系统B、办公软件C、数据库系统D、计算机语言正确答案:D7.某公司需要在Excel中统计各类商品的全年销量冠军,最优的操作方法是:A、在销量表中直接找到每类商品的销量冠军,并用特殊的颜色标记。
数据结构期中考试答案

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)链式 的表示。
数据结构期中考试

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进栈的正确操作是()
《数据结构》期中题库及答案

一、判断题: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、只有在初始数据为逆序时,冒泡排序所执行的比较次数最多。
算法与数据结构期中考试卷

科目:算法与数据结构适用班级:班级:姓名:座号:成绩:(重要提示:请把所有答案写在答题卷上,在考试卷上作答不得分!)一、判断题(共10分,每题1分)1、数据元素是组成数据的基本单位。
(0 )2、数据项是组成数据的最小单位。
(0 )3、因为算法和程序没有区别,所以在数据结构中二者是通用的。
(X )4、顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。
(X )5、如果某数据结构的每一个元素都最多只有一个直接前趋结点,则必为线性表。
(X )6、链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。
(X )7、进栈操作push(x,s)作用于链栈时,无须判满。
(0 )8、一个栈的输入序列是ABCDE,则栈的输出序列不可能是ABCDE。
(X )9、如果一个串中的所有字符均在另一串中出现。
则说明前者是后者的子串。
(X )10、N阶对称矩阵如果进行压缩存储,总共需要N*(N+1)/2个存储单元。
(0 )二、填空题(共20分,每题2分)1.数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的__关系_____和运算的学科。
2.数据结构被形式地定义为(D, R),其中D是的有限集合,R是D上的关系有限集合。
3.数据结构按逻辑结构可分为两大类,它们分别是和。
4.一个算法的效率可分为效率和效率。
5.栈是一种特殊的线性表,允许插入和删除运算的一端称为。
不允许插入和删除运算的一端称为。
6.有一个空栈,现输入序列为1,2,3,4,5,经过push,push,pop,push,pop,push,pop,push,pop,pop后,输出序列为____________________。
7.设S=“A:/mydocument/Mary.doc”,则strlen(s)= , “/”的字符定位的位置为。
8.多维数组的顺序存储有两种形式,分为和。
9.三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的、和。
数据结构期中考试试卷答案(最终定稿)

数据结构期中考试试卷答案(最终定稿)第一篇:数据结构期中考试试卷答案2014-2015学年度第一学期《数据结构》期中考试试卷一、选择题(每题2分,共20分)1.计算机内部数据处理的基本单位是(B)。
A.数据B.数据元素C.数据项D.数据库2.设语句x++的时间是单位时间,则以下语句的时间复杂度为(B)。
for(i=1;i<=n;i++)for(j=i;j<=n;j++)x++;A.O(1)B.O(n)C.O(n)D.O(n)33.在一个长度为n的顺序表中删除第i个元素(0<=i<=n)时,需向前移动(A)个元素。
A.n-i B.n-i+l C.n-i-1 D.i 4.在一个单链表中,已知q结点是p结点的前趋结点,若在q和p之间插入s结点,则须执行(B)。
A.s->next=p->next;p->next=s B.q->next=s;s->next=p C.p->next=s->next;s->next=p D.p->next=s;s->next=q 5.在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top作为栈顶指针,当做出栈处理时,top变化为______。
C A.top 不变B.top=0 C.top--D.top++ 6.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队满的条件为________。
D A.rear%n= = front B.(front+l)%n= = rear C.rear%n-1= = front D.(rear+l)%n= = front 7.两个字符串相等的条件是(D)。
A.两串的长度相等B.两串的长度相等,并且两串包含的字符相同C.两串包含的字符相同D.两串的长度相等,并且对应位置上的字符相同8.数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,该数组按行存放时,元素A[8][5]的起始地址为(C)。
北京大学数据结构与算法2016-2017数据结构与算法final

北京大学信息科学技术学院考试试卷考试科目:数据结构与算法A 姓名:学号:考试时间: 2016 年 1 月 6 日任课教师:以下为试题和答题纸(答案写在答题纸上),包括本页共 6 页。
第一题填空题(每空1分,共8分)1.设无向图G = (V,E)中V={1, 2, 3, 4, 5, 6, 7},E={(1,2), (1,3), (2,3), (4,5), (3,6),(4,7), (5,7)}。
则图G包含的不同生成森林的个数为_________。
注释:其中若两个生成森林的边集不同,则认为它们是不同的生成森林。
2.若对下面的无向图以1为起点运行单源最短路径的Dijkstra算法,则在Dijkstra算法的过程中,每一步依次被选出的顶点依次是____。
若忽略边权,以6为起点进行一次广度优先周游,将得到一棵广度优先搜索的生成树。
设仅包含一个结点的树高度为1,则该生成树的高度为__,树的最深层结点集合为___。
3.用某种排序方法对序列(25, 84, 21, 47, 15, 27, 68, 35, 20)进行排序时,若序列的变化情况如下,则所采用的排序方法为____。
25, 84, 21, 47, 15, 27, 68, 35, 2020, 15, 21, 25, 47, 27, 68, 35, 8415, 20, 21, 25, 35, 27, 47, 68, 8415, 20, 21, 25, 27, 35, 47, 68, 844.假设Shell排序的增量序列是(2k, 2k-1, … , 2, 1),其中k=[log2 n]。
若待排序序列是正序的(已经排好)或逆序的,则Shell排序的时间复杂度分别是__、_。
5.设输入的关键码满足k1>k2>…>k n,缓冲区大小为m。
在n=150, m=25的情况下,用最小值堆进行置换-选择排序方法可产生初始归并段的个数为_______。
6.假定有一棵B+树,它的内部结点可以存储多达20个子结点,叶结点可以存储多达15条记录(本题中的B+树把所有记录存放在叶结点上)。
2017-2018 icpc central quarter final 题解

题目:2017-2018 ICPC Central Quarter Final
解题思路:
题目给出了一个字符串,要求我们找到其中最长的回文子串。
回文子串是指一个字符串,从前往后读和从后往前读都是一样的。
例如,"aba"、"abcba"和"121"都是回文子串。
解题方法:
1.动态规划:使用动态规划算法可以解决这个问题。
我们定义一个二维数组
dp,其中dp[i][j]表示从下标i到下标j之间的子串是否为回文子串。
根据动态规划的思想,我们可以得到状态转移方程为:dp[i][j] = (s[i] == s[j]) && dp[i+1][j-1]。
其中s[i]和s[j]分别表示下标i和下标j处的字符,i+1和j-1分别表示下标i+1和下标j-1处的下标。
2.记忆化搜索:为了避免重复计算,我们可以使用记忆化搜索的方法来优化
动态规划算法。
具体来说,我们可以定义一个二维数组memo,其中memo[i][j]表示是否已经计算过dp[i][j],如果已经计算过,则直接返回memo[i][j]的值,否则计算dp[i][j]的值并将结果存入memo[i][j]中。
3.优化算法:为了进一步优化算法,我们可以使用一些技巧来减少计算量。
例如,我们可以从字符串的两端开始向中间遍历,每次比较两端字符是否相等,如果不相等则将较长的子串长度加1,如果相等则将较短的子串长度加2,这样可以避免重复计算。
另外,我们还可以使用滚动数组来存储子问题的解,从而减少空间复杂度。
代码实现:
以下是Python语言的代码实现:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京大学信息科学技术学院考试试卷 考试科目:数据结构与算法A 姓名: 学号: 考试时间:2017年 11月 15日 任课教师: 以下以下为答题纸,共 页注意事项:1. 全部题目都在空白答题纸上解答。
2. 试卷对算法设计都有质量要求,请尽量按照试题中的要求来写算法。
否则将酌情扣分。
3. 请申明所写算法的基本思想,并在算法段加以恰当的注释。
以下为试题和答题纸,共5页,请把答案写在答题纸。
题号 一 二 三 四 五 总分 分数 阅卷人 北京大学考场纪律 1、考生进入考场后,按照监考老师安排隔位就座,将学生证放在桌面上。
无学生证者不能参加考试;迟到超过15分钟不得入场。
在考试开始30分钟后方可交卷出场。
2、除必要的文具和主考教师允许的工具书、参考书、计算器以外,其它所有物品(包括空白纸张、手机等)不得带入座位,已经带入考场的必须放在监考人员指定的位置,并关闭手机等一切电子设备。
3、考试使用的试题、答卷、草稿纸由监考人员统一发放,考试结束时收回,一律不准带出考场。
若有试题印制问题请向监考教师提出,不得向其他考生询问。
提前答完试卷,应举手示意请监考人员收卷后方可离开;交卷后不得在考场内逗留或在附近高声交谈。
未交卷擅自离开考场,不得重新进入考场答卷。
考试结束监考人员宣布收卷时,考生立即停止答卷,在座位上等待监考人员收卷清点后,方可离场。
4、考生要严格遵守考场规则,在规定时间内独立完成答卷。
不准旁窥、交头接耳、打暗号,不准携带与考试内容相关的材料参加考试,不准抄袭或者有意让他人抄袭答题内容,不准接传答案或者试卷等。
凡有严重违纪或作弊者,一经发现,当场取消其考试资格,并根据《北京大学本科考试工作与学习纪律管理规定》及其他相关规定严肃处理。
5、考生须确认自己填写的个人信息真实、准确,并承担信息填写错误带来的一切责任与后果。
学校倡议所有考生以北京大学学生的荣誉与诚信答卷,共同维护北京大学的学术声誉。
装订线内不要答题一、选择与填空(每空2分,共24分)得分1.下面函数的时间复杂度是()void recursive(int n, int m, int k){if (n <= 0)printf("%d, %d\n", m, k);else {recursive(n-1, m+1, k);recursive(n-1, m, k+1);}}A.O(n*m*k)B. O(n^2*m^2)B.O(2^n) D. O(n!)2.完成在双循环链表结点p之后插入s的操作为( ):A. p->next->prev=s; s->prev=p; s->next=p->next; p->next=s;B. p->next->prev=s; p->next=s; s->prev=p; s->next=p->next;C. s->next=p->next; s->prev=p; p->next->prev=s; p->next=s;D. s->prev=p; s->next=p->next; s->prev->next=s; s->next->prev=s;3.设栈S和队列Q初始状态为空,元素e1,e2,e3,e4,e5,e6依次通过栈S,一个元素出栈后即进队列Q,若6 个元素出队序列是e2,e4,e3,e6,e5,e1,则栈S的容量至少是( )A.2;B.3;C.4;D.64.设循环队列的容量为40 (序号从0到39),现经过一系列的入队和出队运算后:1)front=12,rear=19;2)front=19,rear=12;在这两种情况下,循环队列中的元素个数分别为和。
5.一个n位的字符串共有个子串。
6.已知二叉树有n个结点(n > 0),则度为2的结点最多有个。
7.用数组存储一个有50个元素的最小值堆。
已知堆中没有重复元素。
给出最大元素的下标可能的取值范围为到。
8.假设用于通信的电文由5个字符组成。
已知其中一个字符的Huffman编码为1101,则该Huffman编码树的平均编码长度为。
9.假设先根次序遍历某棵树的结点次序为GABCDIJEFH,后根次序遍历该树的结点次序为BADIJCFEHG,那么I结点的父结点是。
10.一个拥有144个结点的完全三叉树,现在从倒数第二层上任取一个结点,该结点为叶结点的概率是。
(请用化简后的分数表示)。
二、 辨析与简答(共24分) 1. (6分)现有一个由单链表和循环单链表构成的特殊链表,单链表的头元素是head ,末尾元素为tail ,head->…->tail 即是一条普通的链表,同时tail 元素还是另一条循环单链表的头元素。
如A->B->C->D->E->F->G->H->E 就是一个特殊链表,其中head 为A ,tail 为E 。
现在你只知道head ,但是你想知道这个循环链表中有多少元素,但同时你的剩余空间十分的小,所以你想用尽可能小的空间来解决问题,请问你会怎么做?(依据占用空间给分) 2. (6分)假设以I 和O 分别表示入栈和出栈操作,栈的初始和终态均为空,入栈和出栈的操作序列可表示为仅由I 和O 组成的序列,称可以操作的序列为合法序列,否则为非法序列。
如 IOIIOIOO 合法,IOOIOIIO 和IIIOIOIO 为非法。
请给出一个算法,判断所给操作序列是否合法。
3. (6分)给定一棵用数组存储的完全二叉树{10, 5, 12, 3, 2, 1, 8} (1) 用筛选建堆法将该完全二叉树调整为最大值堆。
画出调整后得到的最大值堆,并说明在调整过程中都依次交换了哪些元素。
(注:画堆只需要写出层次遍历序列结果即可) (2) 将6、7、14按顺序插入(1)得到的最大值堆,堆的空间足够大,画出插入14后得到的最大值堆,并说明在插入14的过程中都依次交换了哪些元素。
(3) 对(2)得到的堆进行3次deleteMax ,画出第3次deleteMax 后得到的堆,并说明在第3次deleteMax 的过程中都依次交换了哪些元素。
4. (6分)对下列15个等价对进行合并,给出所得等价类树的图示。
在初始情况下,集合中的每个元素分别在独立的等价类中。
使用重量权衡合并规则,合并时子树结点少的并入结点数多的那棵(多的那个作为新树根,少的那个根作为新根的直接子结点);若两棵树规模同样大,则把根值较大的并入根值较小(新树根取值小的)。
同时,采用路径压缩优化。
(0,2) (1,2) (3,4) (3,1) (3,5) (9,11) (12,14) (12,9) (4,14) (6,7) (8,10) (8,7) (7,11) (10,15) (10,13) 三、 算法填空(每空3分,共24分) 1. 下面的算法利用一个栈将一给定的序列从小到大排序。
长度为n 的序列由1, 2, …, n 这n 个连续的正整数组成。
请补全下面的代码段,使其可以判断给定的序列是否可以利用一个栈进行排序,如果可以,输出相应的操作。
例如:序列4 3 1 2,此序列可以排序,输出:push push push pop push pop pop pop 。
template <class T> // 栈的元素类型为Tclass Stack {public:void clear(); // 变为空栈void push(const T item); // item 入栈T pop(); // 返回栈顶内容并弹出T top(); // 返回栈顶内容但不弹出bool isEmpty(); // 若栈已空返回真bool isFull(); // 若栈已满返回真}; 得分得分Stack<int> s; // s为栈int sequence[maxLen], len; // sequence为待排序序列,l en为序列长度bool islegal() { // 判断序列是否可以排序int i, j, k;for (i = 0; i < len; i++) {for (j = i+1; j < len; j++) {for (k = j+1; k < len; k++) {if ( //填空 1)return false;}}}return true;}void transform() { // 输出转换操作int cur = 1, i = 0;while ( //填空2) {while (s.isEmpty() || //填空3 ) {//填空4cout << "push ";if (cur == s.top()) break;}s.pop();cout << "pop ";++cur;}}2.下面的算法将一个用带右链的先根次序法表示的森林转换为用带度数的后根次序法表示。
请利用题目给出的树结点ADT和栈ADT,填充空格,使其成为完整的算法。
template<T> // 数据结构class RlinkTreeNode {int ltag; // 左标记T info;RlinkTreeNode<T> *rlink; // 右链}template<T>class PostTreeNode {T info;int degree; // 度数}// 算法描述:递归遍历用带右链的先根次序法表示的森林,同时计算出度数并转成后根次序森林;设带右链的先根次序法表示的森林为数组RlinkTreeNode RlinkTree[n];// 带度数的后根次序法表示的森林为数组PostTreeNode PostTree[n];int count = 0; // 计数器int convert(PostTreeNode * node) { // 返回值表示所有右兄弟的数量(包括自己)int tmp;if (1 == node->ltag) { // 若没有左子结点,将该结点输出到PostTree // 填空5PostTree[count].degree = 0; // 度数必然是0count++;}else { // 有左子结点则压栈tmp = convert(node+1); // 访问第一个子结点,并返回度数PostTree[count].info = node->info;// 填空6count++;}if ( // 填空7 ) { // 有右兄弟(,访问并返回右边兄弟的数量+1) return convert(node->rlink) + 1;}else { // 没有右兄弟// 填空8}}四、 算法设计与实现 (14分) 1. (8分) 编写算法伪码,对给定的字符串str ,返回其最长重复子串及其下标位置。