数据结构(1)
数据结构习题及答案 (1)
第八章查找一、判断题1.用二分查找法对一个顺序表进行查找,这个顺序表可以是按各键值排好序的,也可以是没有按键值排好序的。
()2.哈希表的查找不用进行关键字的比较。
()3.哈希表的定义函数H(key)=key%p(p<=m)这种方法是直接定址法。
()4.装填因子α的值越大,就越不容易发生冲突。
( )5.选择hash函数的标准为:随机性好、均匀性好和尽量避免冲突。
( )参考答案:1、×2、×3、×4、×5、√二、填空题1.顺序查找法的平均查找长度为__________,二分查找法的平均查找长度为________,分块查找法(以顺序查找确定块)的平均查找长度为__________,分块查找法(以二分查找确定块〉的平均查找长度为_________,哈希表查找法采用链接法处理冲突时的平均查找长度为_________。
(n+1)/2;((n+1)*log2(n+1))/n-1;(s2+2s+n)/2s;log2(n/s+1)+s/2;1+α2.在各种查找方法中,平均查找长度与结点个数n无关的查法方法是_________哈希表查找3.二分查找的存储结构仅限于_________,且是__________。
顺序;有序的4.在分块查找方法中,首先查找__________,然后再查找相应的___________。
索引;块5.长度为255的表,采用分块查找法,每块的最佳长度是____________。
156.在散列函数H(key)=key%p中,p应取_______________。
小于表长的最大素数7.假设在有序线性表A[1..20]上进行二分查找,则比较一次查找成功的结点数为_________,则比较二次查找成功的结点数为__________,则比较三次查找成功的结点数为_________,则比较四次查找成功的结点数为________,则比较五次查找成功的结点数为_________,平均查找长度为_________。
数据结构试题(一)
数据结构试题(一)一、选择1.评价一个算法时间性能的主要标准是(D)A 算法易于调试B 算法易于理解C 算法的稳定性和正确性D 算法的时间复杂度2.可用带表头结点的链表来表示表,也可用不带表头结点的链表来表示表,前者的主要好处是(B)A 可以加快对表的遍历B 使空表和非空表的处理统一C 提高存取结点的速度D 节省存储空间3.稀疏矩阵一般的压缩存储有两种,即(D)。
A 一维数组和二维数组B 一维数组和三元组C 二维数组和十字链表D 三元组和十字链表4.若进栈序列为a,b,c,d,进栈过程中可以出栈,则( D)不可能是一个出栈序列。
A cbadB bdcaC cdbaD adbc5.将一棵有100个结点的完全二叉树从根的这一层开始,每一层从左到右依次对结点进行编号,根结点编号为1,则编号为49的结点的左孩子的编号为(A)A 98B 99C 50D 486.任何一个无向连通图的最小生成树(B)。
A 只有一棵B 有一棵或多棵C 一定有多棵D 可能不存在7.对于如图所示的带权有向图,从顶点1到顶点5的最短路径为(D)A (1,4,5)B (1,2,3,5)C (1,4,3,5)D (1,2,4,3,5)8.下列排序方法中,要求附加的内存容量最大的是(D )。
A 冒泡排序B 快速排序C 堆排序D 归并排序9.( C)不是哈希查找中的冲突处理方法。
A 链地址法B 再哈希法C 除留余数法D 随机探测法10.在一棵7阶的B-树中,除根结点外,每个结点中的最多有( A )个关键字。
A 6B 5C 4D 3第1题正确答案为D第2题正确答案为B第3题正确答案为D第4题正确答案为D第5题正确答案为A第6题正确答案为B第7题正确答案为D第8题正确答案为D第9题正确答案为C第10题正确答案为D二、填空题1.在长度为n的顺序表中删除一个元素时,等概率情况下的平均移动元素的次数是n-1/22. 仅允许在表的同一端进行插入和删除运算的线性表被称为栈3.大小为M的顺序存储的循环队列sq队满的条件为(sq.rear+1)%M ==sq.fpont4.已知一棵二叉树的先根序列为ABDFCE,中根序列为DFBACE,后序序列为FDBECA5.在无向图G的邻接矩阵表示中,第j列中非零元的个数等于该顶点的度6.克鲁斯卡尔算法适用于求边稀疏的网的最小生成树。
数据结构试题及答案(1)
数据结构试题一、单选题1、在数据结构的讨论中把数据结构从逻辑上分为(C )A 内部结构与外部结构B 静态结构与动态结构C 线性结构与非线性结构D 紧凑结构与非紧凑结构。
2、采用线性链表表示一个向量时,要求占用的存储空间地址(D )A 必须是连续的B 部分地址必须是连续的C 一定是不连续的D 可连续可不连续3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为( D )。
A nB n/2C (n-1)/2D (n+1)/24、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行( D )。
A s→link = p→link; p→link = s;B p→link = s; s→link = q;C p→link = s→link; s→link = p;D q→link = s; s→link = p;5、如果想在4092个数据中只需要选择其中最小的5个,采用( C )方法最好。
A 起泡排序B 堆排序C 锦标赛排序D 快速排序6、设有两个串t和p,求p在t中首次出现的位置的运算叫做( B )。
A 求子串B 模式匹配C 串替换D 串连接7、在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j从1到10。
所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储字数是( C )。
A 80B 100C 240D 2708、将一个递归算法改为对应的非递归算法时,通常需要使用( A )。
A 栈B 队列C 循环队列D 优先队列9、一个队列的进队列顺序是1, 2, 3, 4,则出队列顺序为( C )。
10、在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是( D )。
A ( front - rear + 1) % mB ( rear - front + 1) % mC ( front - rear + m) % mD ( rear - front + m) % m11、一个数组元素a[i]与( A )的表示等价。
03、1数据结构第一部分--线性表-树与二叉树
数据结构(一)目录第1章序论 (1)1.1 什么是数据? (1)1.2 什么是数据元素? (1)1.3 什么是数据结构及种类? (1)1.4 数据的逻辑结构 (1)1.5 数据的物理结构 (1)1.6 算法和算法分析 (1)1.7 算法的五个特性 (1)1.8 算法设计的要求 (2)1.9 算法效率的度量 (2)第2章线性表 (3)2.1 线性表举例 (3)2.2 线性表的存储 (4)2.3 线性表-栈 (4)2.4 队列 (4)2.5 双端队列 (6)第3章树和二叉树 (6)3.1 树 (6)3.1.1 树的基本概念 (6)3.1.2 树的常用存储结构 (6)3.1.3 树的遍历 (7)3.2 二叉树 (7)3.2.1 二叉树的基本概念 (7)3.2.2 二叉树与树的区别 (7)3.2.3 树及森林转到二叉树 (7)3.2.4 二叉树的性质 (8)3.2.5 满二叉树 (8)3.2.6 完全二叉树 (8)3.2.7 完全二叉树的性质 (9)3.2.8 二叉树的四种遍历 (9)3.2.9 二叉排序树 (10)3.2.10 平衡二叉树 (11)3.2.11 m阶B-树 (11)3.2.12 最优二叉树 (11)3.2.13 二叉树的存储结构 (12)3.3 广义表 (13)3.4 矩阵的压缩存储 (14)3.4.1 特殊矩阵 (14)3.4.2 压缩存储 (14)第4章历年真题讲解 (15)4.1 2009年上半年 (15)4.2 2009年下半年 (15)4.3 2010年上半年 (15)4.4 2011年上半年 (16)4.5 2011年下半年 (16)4.6 2012年上半年 (17)4.7 2012年下半年 (17)4.8 2013年上半年 (18)4.9 2013年下半年 (18)4.10 2014年上半年 (18)4.11 2014年下半年 (19)4.12 2015年上半年 (19)4.13 2015年下半年 (19)4.14 2016年上半年 (20)第1章序论什么是数据?所有能输入到计算机中并能够被计算机程序处理的符号的总称,它是计算机程序加工的原料。
数据结构第1章-答案
一、填空题01、数据结构是一门研究非数值计算的程序设计问题中计算机的(操作对象)以及它们之间的(关系和运算)等的学科。
02、数据结构被形式地定义为(D,R),其中D是(数据元素)的有限集合,R是D上的(关系)有限集合。
03、数据结构包括数据的(逻辑结构)、数据的(存储结构)和数据的(运算)这三个方面的内容。
04、数据结构按逻辑结构可分为两大类,它们分别是(线性结构)和(非线性结构)。
05、线性结构中元素之间存在(一对一)关系,树形结构中元素之间存在(一对多)关系,图形结构中元素之间存在(多对多)关系。
06、在线性结构中,第一个结点(没有)前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点(没有)后续结点,其余每个结点有且只有1个后续结点。
07、在树形结构中,树根结点没有(前驱)结点,其余每个结点有且只有(1)个前驱结点;叶子结点没有(后续)结点,其余每个结点的后续结点数可以(任意多个)。
08、在图形结构中,每个结点的前驱结点数和后续结点数可以(任意多个)。
09、数据的存储结构可用四种基本的存储方法表示,它们分别是(顺序)、(链式)、(索引)、(散列)。
10、对于给定的n个元素,可以构造出的逻辑结构有(集合)、(线性结构)、(树形结构)、(图状结构)四种。
11、数据的运算最常用的有5种,它们分别是(插入)、(删除)、(修改)、(查找)、(排序)。
12、一个算法的效率可分为(时间)效率和(空间)效率。
13、数据结构中评价算法的两个重要指标是算法的(时间复杂度)和(空间复杂度)。
14、一个数据结构在计算机中的(映射)称为存储结构。
15、算法的五个重要特性是(有穷性)、(确定性)、(可行性)、输入、输出。
16、已知如下程序段for (i=n; i>=1; i--) //语句1{ x++; //语句2for (j=n; j>=i; j--) //语句3y++; //语句4}语句 1 执行的频度为(n+1);语句2执行的频度为(n);语句3执行的频度为(n(n+3)/2);语句4执行的频度为(n(n+1)/2)。
数据结构(C语言)第一章
(4)输入
一个算法有零个或多个输入,这些输入取自于
某个特定的对象集合。
(5)输出
一个算法有一个或多个输出,这些输出是同输
入有着某些特定关系的量。 注意: 算法和程序是有区别的,即程序未必能满足有穷性。 本教材使用类C语言描述算法的,类C和标准C语言是有区 别的,同时,算法着重于思想的描述,可能会省略许多细节。 不要把算法看成程序,切忌将算法中的相应函数和数据类 型直接照搬到程序中。
19
例:编制一个事务管理的程序,管理学校科学研究课题小 组的各项事务,则首先要为程序的操作对象——课题小 组设计一个数据结构。 假设每个小组由一位教师、一至三名研究生及一至 六名本科生组成,小组成员之间的关系是:教师指导研 究生,而由每位研究生指导一至两名本科生。则可以如 下定义数据结构: Group = (P,R) 其中: P = {T,G1,…,Gn,S11…Snm} 1<=n<=3,1<=m<=2, R = {R1, R2} R1 = {<T, Gi> | 1<=i<=n, 1<=n<=3 } R2 = {<Gi, Sij> | 1<=i<=n, 1<=j<=m, 1<=n<=3, 1<=m<=2}
种或多种特定关系的数据元素的集合。
数据结构主要指逻辑结构和物理结构。
17
5. 逻辑结构:数据元素之间的逻辑关系。 根据数据元素之间的逻辑结构可将数据结构分为四类:
集合 ——结构中的数据元素除了同属于一种类型外,别无其 它关系。 线性结构——数据元素之间存在一对一的关系。如线性表、 栈、队列。 树形结构——数据元素之间存在一对多的关系。如树。 图状结构——数据元素之间存在多对多的关系,如图。
数据结构第一章
1.3 算法的描述
(2) 空间效率 一个算法在执行过程中所占用的存储空间大小,称为空间效率或空 间复杂度。与时间复杂度类似,空间复杂度是指算法在计算机内执行 时临时占用的存储空间大小。算法的空间复杂度一般以数量级形式给 出。 提高算法空间复杂度的措施有原地工作和压缩存储。
1.3 .4算法的描述语言
1.3 算法的描述
例1.6 求下列4个程序段的语句频度 (a) i++; x=0; (b)for(i=1;i<=n;i++) x=x+1;
(c)for(i=1;i<=n;i++) for (j=1;j<=n;j++) x=x+1;
(d)for(i=1;i<=n;i++) for (j=1;j<=n;j++) for (k=1;k<=n;k++) x=x+1;
记录号 学号 980001 980002 姓名 吴承志 李淑芳 性别 男 女 专 业 计算机科学与技术 信息与计算科学 年级 98级 2001级 98级 9,10 1,2 2000级 6,7,8
1 2 3 4 5
990301
990302
刘 丽
张会友
女
男
数学与应用数学
信息与计算科学
99级
99级
98级
99级
数学与应用数学
2000级 2001级
2001级
姓名索引表
9
10
学生信息表
教学计划编排问题 案例2
问题: 如何通过计算机编排教学计划? 算法分析: 一个教学计划包含许多课程,在教学计划包含的许多课程之间,有些必须按规 定的先后次序进行,有些则没有次序要求。即有些课程之间有先修和后续 的关系,有些课程可以任意安排次序。这种各个课程之间的次序关系可用 一个称作图的数据结构来表示
数据结构第一章--绪论(严蔚敏版)
解 T = (D, R ) D={A,B,a,b,c }
R是D上的关系的集合 是 上的关系的集合
A
B
a R={ P1,P2 } P1 ={<A,a>, <A,b>, <A,c>} P2 ={<B,a>, <B,b>, <B,c>}
b
c
写出一个复数的数据结构 例3 写出一个复数的数据结构 Complex= (C , R) 解 一个复数可以表示为 a+bi 一个复数可以表示为 复数 C={a,b}
也可以表示成一个有序对 <a, b>
∴这里存在一种关系 P ={<a,b>} (只有一个有序对 只有一个有序对) 只有一个有序对
而R是C上的关系的集合 R={ P } 是 上的关系的集合
写出一个复数的数据结构 例3 写出一个复数的数据结构 Complex= (C , R) 解 一个复数的数据结构为 Complex= (C , R) 其中, 其中, C={a,b} R={ P } P ={<a,b>}
a b c
解 其数据结构可描述为 d e T = (D, R ) D是数据元素的集合 D={a,b,c,d,e} 是数据元素的集合
R是D上的关系的集合 R={ P } 是 上的关系的集合
P ={<a,b>,<a,c>,<b,d>,<b,e>}
例2
一小组有a,b,c 三个学生,一个导师A 一小组有a,b,c 三个学生,一个导师A 和一个辅导员B 和一个辅导员B,此小组的数据结构如图:
48
ADT 抽象数据类型名 { 数据对象: 数据对象:〈数据对象的定义〉 数据关系: 数据关系:〈数据关系的定义〉 基本操作: 基本操作:〈基本操作的定义〉 } ADT 抽象数据类型名 其中基本操作的定义格式为: 基本操作名(参数表) 基本操作名 初始条件:〈初始条件描述〉 初始条件: 操作结果:〈操作结果描述〉 操作结果
数据结构1
24
1.3 算法评价 1、算法的性能标准 正确性 可读性 效率 健壮性 空间复杂度
25
1.3 算法评价 2、算法的效率 算法的后期测试
算法的事前估计
该语句的执行次数.
(1)频度
26
例 以迭代方式求累加和的函数
float sum ( float a[ ], int n ) { float s = 0.0; for ( int i = 0; i < n; i++ ) s += a[i]; return s; }
集合
例 DS=(D,S) D={d1, d2, d3, d4,d5,d6 ,d7} S={R} d1 R , d2 R , d3R , d4 R , d5 R , d6 R , d7 R d1 d2 d3
d4
d5
d6
d7 集合特点: 结构中的数据元素只具有“ 同属于一个集合”的关系
算法描述 算法评价 与算法描述有关的C++知识
4
数据结构讨论的范畴
6845678是谁的电 话? 太难找了!
电话号码本1 党政机关 党政机关 党政机关 党政机关 党委总机 4811122
大专院校 大专院校
党委总机 4811122 党委总机 4811122 党委总机 4811122 宣传部 4811234 宣传部 4811234 宣传部 4811234 宣传部 4812345 4811234 组织部 组织部 4812345 组织部 4812345 组织部 4812345
党政 机关
单专院校
预 料卫生
交通 y运输
内 蒙 古党委
内 蒙 古政 府
内 蒙 古大学
内 蒙古财 经学院
数据结构-1_真题-无答案
数据结构-1(总分100,考试时间90分钟)一、单项选择题在每小题列出的四个选项中只有一个选项是符合题目要求的1. 设数组data[0..m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为( )A. front:=front+1B. front:=(front+1)mod mC. rear:=(rear+1)mod mD. front:=(front+1)mod(m+1)2. 在Hash函数H(k)=k MOD m中,一般来讲,m应取( )A. 奇数B. 偶数C. 素数D. 充分大的数3. 实现任意二叉树的后序遍历的非递归算法而不使用栈结构,最佳方案是二叉树采用( )存储结构。
A. 二叉链表B. 广义表C. 三叉链表D. 顺序4. 向一个栈顶指针为Top的链栈中插入一个s所指结点时,其操作步骤为( )A. Top—>next=s;B. s—>next=Top—>next;Top—>next=s;C. s—>next=Top;top=s;D. s—>next=Top; Top=Top—>next;5. 快速排序在最坏情况下的时间复杂度是( )A. O(nlogB. O(n2)C. O(n3)D. 都不对6. 内部排序的方法有许多种,( )方法是从未排序序列中依次取出元素,与已排序序列中的元素作比较,将其放入已排序序列的正确位置上。
A. 归并排序B. 插入排序C. 快速排序D. 选择排序7. 对于一个具有N个顶点的图,如果我们采用邻接矩阵法表示,则此矩阵的维数应该是( )A. (N-1)×(N-1)B. N×NC. (N+1)×(N+1)D. 不确定8. 在一个长度为n的顺序表(顺序存储的线性表)中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需向后移动( )个元素。
A. n-iB. n-i+1C. n-i-1D. i9. 下面四种排序方法中,平均查找长度最小的是( )A. 插入排序B. 选择排序C. 快速排序D. 归并排序10. 如果我们采用二分查找法查找一个长度为n的有序表,则查找每个元素的平均比较次数( )对应的判定树的高度(假设树高h≥2)。
数据结构(一)
数据的逻辑结构
•线性结构 •树形结构 •图状结构 •集合结构
差不多概念
差不多概念
线性结构 结构中有且仅有一个始结点和一个终结点,
每个内结点有且仅有一个前趋结点和一个后继 结点。
非线性结构 结构中的结点可能有多个前趋结点和多个后
继结点。
差不多概念
一行表示一个结点(元素),每个结点由学号、姓名、性别等九个 域(数据项)组成。
// 以二维数组存储矩阵元素,c 为 a 和 b 的乘积
for (i=0; i<n; ++i)
for (j=0; j<n; ++j) {
c[i][j] = 0;
for (k=0; k<n; ++k)
c[i][j] += a[i][k]*b[k][j]; } //for
O(n3)
} //mult
例子:
可读性: 可读性好的算法有助于设计者和他人阅读、理 解、修改和重用。晦涩难读的程序易于隐藏较多错误。
坚固性: 当输入数据非法时,算法能适当地作出合适的 反应。
高效率与低存储量需求:通常,效率指的是算法执行时间; 存储量指的是算法执行过程中所需的最大存储空间,两 者都与问题的规模有关。
差不多概念
假设所需额外空间相关于输入数据量来说是常 数,那么称此算法为原地工作。
若所需存储量依赖于特定的输入,则通常按最 坏情况考虑。
差不多概念
数据类型
在用高级程序语言编写的程序中,必须对程序中出现 的每个变量、常量或表达式,明确说明它们所属的数据 类型。
不同类型的变量,其所能取的值的范围不同, 所能进行的操作不同。 数据类型是一个值的集合和定义在此集合上的 一组操作的总称。
数据结构1
数据对象
是性质相同的数据元素的集合. 性质相同的数据元素的集合. 是数据的一个子集. 是数据的一个子集. 例如:整数数据对象是集合N={0, 例如:整数数据对象是集合N={0,±1,±2,……} 是集合N={0 } 字母字符数据对象是集合C={"A , 字母字符数据对象是集合C={ A","B",……"Z"} 是集合C={ , Z }
Data Structure
2010-1-2
Page 10
例如 例1-1:图书馆的书目检索自动化问题
书目卡片
登录号: 书名: 作者名: 分类号: 出版单位: 出版时间: 价格:
Data Structure
2010-1-2
Page 11
例如 例1-1:图书馆的书目检索自动化问题
线性的数据结构
书目文件
001 002 003 004 ……
按书名
高 等 数 学 001, 003… … 理 论 力 学 002, … … .. 线 性 代 数 004, … … …… … … ..
高等数学 理论力学 高等数学 线性代数 ……
樊映川 罗远祥 华罗庚 栾汝书 ……
按作者名
S01 L01 S01 S02 ……
索引表
《数据结构与习题解析》 清华大学出版社 数据结构与习题解析》 人民邮电出版社
数据结构》 谢楚屏等编著 《数据结构》
Data Structure
2010-1-2
Page 6
六,与相关课程的联系 先修课程:高级语言程序设计( ),离散数学 先修课程:高级语言程序设计(C),离散数学 后续课程:操作系统, 后续课程:操作系统,数据库原理等
四,学分及学时分配 学时:课程讲授学时64 学时:课程讲授学时64 上机学时8 上机学时8 合计:72学时 合计:72学时
数据结构实验指导书(1)课案
《数据结构》实验指导书郑州轻工业学院2016.02.20目录前言 (1)实验01 顺序表的基本操作 (3)实验02 单链表的基本操作 (11)实验03 栈的基本操作 (19)实验04 队列的基本操作 (21)实验05 二叉树的基本操作 (23)实验06 哈夫曼编码 (24)实验07 图的两种存储和遍历 (26)实验08 最小生成树、拓扑排序和最短路径 (29)实验09 二叉排序树的基本操作 (31)实验10 哈希表的生成 (32)实验11 常用的内部排序算法 (34)附:实验报告模板 (36)前言《数据结构》是计算机相关专业的一门核心基础课程,是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础,也是很多高校考研专业课之一。
它主要介绍线性结构、树型结构、图状结构三种逻辑结构的特点和在计算机内的存储方法,并在此基础上介绍一些典型算法及其时、空效率分析。
这门课程的主要任务是研究数据的逻辑关系以及这种逻辑关系在计算机中的表示、存储和运算,培养学生能够设计有效表达和简化算法的数据结构,从而提高其程序设计能力。
通过学习,要求学生能够掌握各种数据结构的特点、存储表示和典型算法的设计思想及程序实现,能够根据实际问题选取合适的数据表达和存储方案,设计出简洁、高效、实用的算法,为后续课程的学习及软件开发打下良好的基础。
另外本课程的学习过程也是进行复杂程序设计的训练过程,通过算法设计和上机实践的训练,能够培养学生的数据抽象能力和程序设计能力。
学习这门课程,习题和实验是两个关键环节。
学生理解算法,上机实验是最佳的途径之一。
因此,实验环节的好坏是学生能否学好《数据结构》的关键。
为了更好地配合学生实验,特编写实验指导书。
一、实验目的本课程实验主要是为了原理和应用的结合,通过实验一方面使学生更好的理解数据结构的概念和常用的几种数据结构在计算机中的存储和实现的方法,加强学生动手能力;另一方面培养学生从实际问题中抽象出对应的抽象数据类型,进而找到合适的计算机存储方法和算法,为以后课程的学习、大型软件的开发、实际工程问题打下良好的软件开发基础。
数据结构1
第 1 章 绪 论1.1 数据结构的兴起和发展一、数据结构起源于程序设计。
·程序设计的新问题:应如何组织待处理的数据以及数据之间的关系(结构)。
·70年代初,数据结构作为一门独立的课程开始进入大学课堂。
二、数据结构随着程序设计的发展而发展。
程序设计经历了三个阶段:无结构阶段、结构化阶段和面向对象阶段,相应地,数据结构的发展也经历了三个阶段:三、数据结构的发展并未终结。
1. 数据结构将继续随着程序设计的发展而发展;2. 面向各专门领域的数据结构得到研究和发展,各种空间数据结构也在探索中。
应用领域:科学计算;程序设计面向计算机 应用领域:科学计算与非数值处理;算法+数据结构=程序 应用领域:更多地应用于非数值处理;(算法+数据结构)=程序1.2 数据结构的研究对象例1-1 学籍管理问题例1-2 人——机对弈问题例1-3 教学计划编排问题表1-1 学生学籍登记表 (a) 井字棋的一个格局 (b) 对弈树的局部 图1-2 对弈问题中格局之间的关系1.3 数据结构的基本概念1.3.1 数据结构1. 数据:在计算机科学中是指所有能输入到计算机中并能被计算机程序识别和处理的符号集合。
2. 数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
构成数据元素的不可分割的最小单位称为数据项。
3. 数据对象:是具有相同性质的数据元素的集合,是数据的子集。
4. 数据结构:是指相互之间存在一定关系的数据元素的集合。
按照视点的不同,数据结构分为逻辑结构和存储结构。
数据的逻辑结构是指数据元素之间逻辑关系的整体。
根据数据元素之间逻辑关系的不同,数据结构分为四类:⑴集合数据元素之间的关系是。
⑵线性结构数据元素之间的关系是。
⑶树结构数据元素之间的关系是。
⑷图结构数据元素之间的关系是。
数据的存储结构又称为物理结构,是数据及其逻辑结构在计算机中的表示。
有两种存储结构:顺序存储结构和链接存储结构。
数据结构第1-4章选择题(有答案)
第1章绪论5.选择题(1)在数据结构中,从逻辑上可以把数据结构分成()。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.内部结构和外部结构(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。
A.存储结构 B.存储实现C.逻辑结构 D.运算实现(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。
A.数据具有同一特点B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致C.每个数据元素都一样D.数据元素所包含的数据项的个数要相等(4)以下说法正确的是()。
A.数据元素是数据的最小单位B.数据项是数据的基本单位C.数据结构是带有结构的各数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构说明:注意几个概念:数据项是数据的最小单位而不是基本单位,数据元素才是数据的基本单位,数据结构是带有结构的数据元素的集合而不是数据项的集合。
(5)以下与数据的存储结构无关的术语是()。
A.顺序队列 B. 链表 C. 有序表 D. 链栈说明:数据的存储结构只有数组(或称为顺序存储)和链表两种。
顺序队列是用数组存储的队列,链表和链栈都是用链表。
(6)以下数据结构中,()是非线性数据结构A.树 B.字符串 C.队 D.栈第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。
A.110 B.108 C.100 D.120说明:计算公式:A+(i-1)*L,A为起始地址,i是元素序号,L是元素长度。
(2)在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是()。
A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)B.在第i个结点后插入一个新结点(1≤i≤n)C.删除第i个结点(1≤i≤n)D.将n个结点从小到大排序(3)向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动的元素个数为()。
数据结构(从概念到算法)第一章 绪论
(2)可读性:算法的变量命名、格式符合行业规范,并在关键处给出注释,
以提升算法的可理解性。
(3)健壮性:算法能对不合理的输入给出相应的提示信息,并做出相应处
理。
(4)高执行效率与低存储量开销:涉及算法的时间复杂度和空间复杂度评
判。
算法设计的一般步骤
1.3.1算法定义与性质
算法设计出来后有多种表述方法,一般有如下几种描述工具:第一种是自然语
良好基础,数据结构与算法设计密不可分。算法是对特定问题求解步骤的一种描述。
换言之,算法给出了求解一个问题的思路和策略。
一个算法应该具有以下 5 个特征。
(1)有穷性,即算法的最基本特征,要求算法必须在有限步(或有限时间)
之后执行完成。
(2)确定性,即每条指令或步骤都无二义性,具有明确的含义。
(3)可行性,即算法中的操作都可以通过已经实现的基本运算执行有限次
成的集合,数据对象是数据的一个子集。实例说明如下。
由 4 个整数组成的数据对象: D1={20,- 30,88,45}
由正整数组成的数据对象: D2={1,2,3,…}
数据结构的基本概念
(5)数据结构。数据结构是相互之间存在一种或多种特定关系的数据元素
的集合。数据元素之间的关系称为结构,主要有 4 类基本结构,如下图所示。
址,数据'C'的指针指向数据'D'的结点地址,具体如图所示。
数据结构的基本概念
上图数据元素存储的地址在整体上具有前后次序,但实际对单链表数据元素
所分配的存储空间是随机的。如下图 所示,数据元素'A'在物理存储地址上可能位
于数据元素'B'和'D'存储地址之后。
数据结构(1-2-3章)课后题答案解析
q=p; p=p->next; b->next=q; q->next=B; b=b->next; } else {//分出其他字符结点 q=p; p=p->next; c->next=q; q->next=C; c=c->next; } } }//结束
西北大学可视化技术研究所
A.双向链表
B.双向循环链表
C.单向循环链表 D.顺序表
(4)下列选项中, D 项是链表不具有的特点。
A.插入和删除运算不需要移动元素
B.所需要的存储空间与线性表的长度成正比
C.不必事先估计存储空间大小
D.可以随机访问表中的任意元素
西北大学可视化技术研究所
(5)在链表中最常用的操作是删除表中最后一个结点和 在最后一个结点之后插入元素,则采用 C 最 节省时间。
西北大学可视化技术研究所
8.假设两个按元素值递增有序排列的线性 表A和B,均以单链表作为存储结构,请 编写算法,将A表和B表归并成一个按元 素值递减有序排列的线性表C,并要求利 用原表(即A表和B表的)结点空间存放 表C。
西北大学可视化技术研究所
算法描述:要求利用现有的表A和B中的结 点空间来建立新表C,可通过更改结点的next 域来重新建立新的元素之间的线性关系。为保 证新表递减有序可以利用头插法建立单链表的 方法,只是新建表中的结点不用malloc,而只 需要从A和B中选择合适的点插入到新表C中即 可。
西北大学可视化技术研究所
1.3填空题: (1)变量的作用域是指 变量的有效范围 (2)抽象数据类型具有 数据抽象 、 信息隐 蔽 的特点。 (3)一种抽象类型包括 数据对象 、 结构 关系 和 基本操作 。
数据结构作业(1)
第一章绪论一、选择题1.一个算法应该是()。
A.程序B问题求解步骤的描述C 要满足5个基本特性D.A和c2 计算机算法必须具备输入、输出、()等5个特性。
A 可行性、可移植性和可扩展性B 可行性、确定性和有穷性C 确定性、有穷性和稳定性D 易读性、安全性和稳定性3 在数据结构中,从逻辑上可以把数据结构分为()A 动态结构和静态结构B 紧凑结构和非紧凑结构C 内容结构和外部结构D 线性结构和非线性结构4 下面程序段的时间复杂性的量级为()for (i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)x=x+1;A O(1)B O(n)C O(n2)D O(n3)5 在数据结构中,与所使用的计算机无关的是数据的()结构A 逻辑B 存储C 逻辑和存储D 物理6 数据结构在计算机中的表示是指()A 数据的逻辑结构B 数据结构C 数据的存储结构D 数据元素之间的关系7 下面()的时间复杂性最好,即执行时间最短。
A O(n)B O(logn)C O(nlogn)D O(n2)8 下面程序段的时间复杂性的量级为()。
int fun(int n){i=1,s=1;while(s<n)s+=++i;return i;}A O(n/2)B O(logn)C O(n)D O(n1/2)9 下面程序段的时间复杂性的量级为()。
for(int i=0;i<m;i++)for(int j=0;j<n;j++)A[i][j]=i*j;A O(m3)B O(n2)C O(m*n)D O(m+n)10 执行下面程序段时,S 语句的执行次数为()。
for(int i=1;i<n-1;i++)for(int j=i+1;j<=n;j++)S;A n(n-1)/2B n2/2C n(n+1)/2D n11、研究数据结构就是研究( )。
A、数据的逻辑结构B、数据的存储结构C、数据的逻辑结构和存储结构D、数据的逻辑结构、存储结构及其数据在运算上的实现12、以下属于逻辑结构的是( )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.填空题
1. _集合__、线性结构、__树形结构____ 、图形结构
2.p->next!=NULL
3.时间复杂度和空间复杂度
4.随机存取
5..队尾
6. n-1
二、单选题、
1-5DAACC 6-10DBDDB 11-15DCABD
三,简答题
1、
2、数据是对客观事物的描述形式和编码形式的统称,是算法和程序的处理对象和计算结构。
数据元素又称数据结点,简称结点,通常一个数据结点由用来描述一个独立事的名称、数量、特性、性质的一组相关信息。
多数情况下,一个结点包含有多个数据项,每个数据项是结点的一个域,能够用来唯一标识结点的域称为关键字域。
算法:有穷规则的集合,而规则规定了解决某一特定问题的运算序列。
有穷性:必须在执行有穷步后终止。
确定性:每一步必须具有确定的定义,不能含糊不清,不带二义性。
可行性:所有运算都可以精确地实现。
输出数据:必须有输出数据,包括输出某种动作或控制信号。
输入数据:作为执行前的初始量。
不是必须。
算法有两种表现形式:描述形式和程序形式。
计算时间复杂的的方法:
•支配性语句度量法:在一段程序中,往往有一条语句执行次数最多,话费时间也就是最多,其他语句执行次数的和将不超过这套语句执行次数的常数倍,那么就称这条语句在话费时间上是起支配性作用的典型语句,于是可选这条语句的执行次数作为度量这段程序花费时间的阶。
•
四、应用题
1、
2、、对给定的n个权值bai{W1,W2,W3,...,Wi,...,Wn}构成n棵二叉树的初始集合F= {T1,T2,T3,...,Ti,...,Tn},其中du每棵二叉树Ti中只有一个权值zhi为Wi的根结点,
它的左右子树均为空。
(为方便在计算机上实现算法,一般还要求以Ti的权值Wi的
升序排列。
)二、在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树,新二叉树的根结点的权值为其左右子树的根结点的权值之和。
三、从F中删除这
两棵树,并把这棵新的二叉树同样以升序排列加入到集合F中。
四、重复二和三两步,直到集合F中只有一棵二叉树为止。
树的带权路径长度规定为所有叶子结点的带权路径长度之和,记为WPL
WPL=∑Wi*Li (i=1到n)
WPL=(2+4)*3+(6+8+10)*2
=66。