没有合适的资源?快使用搜索试试~ 我知道了~
xianligongdaxue——————863数据结构
需积分: 9 2 下载量 3 浏览量
2020-12-17
10:27:26
上传
评论 1
收藏 8.36MB DOCX 举报
温馨提示
试读
64页
863数据结构复习题863数据结构复习题863数据结构复习题863数据结构复习题863数据结构复习题
资源详情
资源评论
资源推荐
第一章 绪论
考试大纲
1)了解数据元素、数据结构、抽象数据类型、存储结构等概念;了解算法概念及算法设计的基本要求 ;
2)掌握算法分析方法、语句的频度和估算时间复杂度、空间复杂度分析方法。
考查要点
1.数据结构的研究内容
包括 数据的逻辑结构、数据的存储结构 和 对数据元素施加的操作(即数据的运算)三方面。
2.算法概念及其评价
五大特性:有穷性、确定性、可行性、输入性、输出性;
算法评价:正确性、可读性、健壮性、高效性、低存储性;
要特别弄清诸如语句频度、时间复杂度、空间复杂度等的概念,评价一个算法好坏的两个主要标准--时间复杂度和空间复杂度。
3.算法和程序的区别
a. 程序不一定满足有穷性(如操作系统);
b. 程序中的指令必须是机器可执行的,算法中的指令则无此限制;
c. 算法代表了对问题的解,程序则是算法在计算机上的特定的实现(一个算法若用程序设计语言来描述,它才是一个程序);
d. 数据结构+算法=程序。
4.数据结构的相关概念
数据结构包括 数据的逻辑结构 和 数据的存储结构。
数据元素 是组成数据的基本单位。
数据项 是数据不可分割的最小单位。
数据逻辑结构的两大类型(线性结构、非线性结构)、抽象数据类型(是指一个数学模型以及定义在该模型上的一组操作)。
数据的四种逻辑结构(集合、线性、树形、图形)
数据的四种存储结构(顺序、链式、索引、散列)
不管是顺序存储结构还是链式存储结构,都要存储数据元素本身和数据元素之间的关系
顺序存储结构、链式存储结构都可存各种逻辑结构
5.数据逻辑结构、存储结构的区别和联系
区别:数据的逻辑结构是一个数学模型;数据的存储结构是数据的逻辑结构在计算机内部的存储方式。
联系:一种逻辑结构可以用多种存储结构来存储;一种存储结构可以用来存多种逻辑结构。
课后习题
1. 数据结构包括 数据的逻辑结构、数据的存储结构 和 数据的运算。
2. 数据的逻辑结构可以分为 线性 和 非线性 两大类型。
3. 在算法正确的前提下,评价一个算法好坏的两个主要标准是 时间复杂度 和 空间复杂度。
4. 对于给定的 n 个元素,可以构造出的逻辑结构有线性、树形、图形 和 集合 四种。
5. 数据的存储结构不仅有顺序存储结构、链式存储结构,还有 索引存储结构 和 散列存储结构。
6. 组成数据的基本单位是 数据元素。
7. 数据结构的两个要素是 数据元素 和 数据元素之间的关系。
8. 语句频度是 语句重复执行的次数。
9. 算法是 对特定问题求解步骤的一种描述,是指令的有限序列。
10. 数值计算问题是 操作对象之间的关系可以用数学方程加以描述的问题 ;非数值计算问题是 操作对象之间的关系不能用数
学方程加以描述的问题。
1
11. 程序是 算法在计算机上的特定的实现。
12. 抽象数据类型是指 一个数学模型以及定义在该模型上的一组操作。
13. 学习数据结构课程的目的是 非数值计算问题的程序设计。
14. 算法可用 自然语言、流程图、N-S 图、计算机语言、伪码语言等 描述。
15. 存储密度是 一个结点中数据元素所占的存储单元和整个结点所占的存储单元之比 。
二.简答题
1. 试说明算法与程序有哪些区别?
答:至少有四点区别:
(1)程序不一定满足有穷性(如操作系统);
(2)程序中的指令必须是机器可执行的,算法中的指令则无此限制;
(3)算法代表了对问题的解,程序则是算法在计算机上的特定的实现(一个算法若用程序设计语言来描述,它才是一个程序);
(4)数据结构+算法=程序。
2. 举一个数据结构的例子,叙述其逻辑结构、存储结构和运算(操作)三方面的内容。
答:例如有一张学生成绩表,记录了一个班的学生各门课的成绩。按学生的姓名为一行记成的表,这个表就是一个数据结构。
每个记录(有姓名、学号、成绩等项)就是一个结点,对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结
点(它的后面无记录),其它的结点则各有一个也只有一个直接前趋和直接后继(它的前面和后面均有且只有一个记录)。这
几个关系就确定了这个表的逻辑结构——线性结构。
那么我们怎样把这个表中的数据存储到计算机里呢? 用高级语言如何表示各结点之间的关系呢? 是用一片连续的内存单元来
存放这些记录(如用数组存储,亦即顺序存储)还是随机存放各结点数据再用指针进行链接(链式存储)呢? 这就是存储结构
的问题,我们都是从高级语言的层次来讨论这个问题的。
最后,我们有了这个表(数据结构),肯定要用它,那么就是要对这张表中的记录进行查询、修改、删除等操作,对这个表可
以进行哪些操作以及如何实现这些操作就是数据的运算(操作)问题了。
3. 什么叫算法效率?如何度量算法效率?
答:算法效率包括时间效率和空间效率。时间效率指算法运行得有多快;空间效率关心算法需要的额外空间。算法效率通常用
时间复杂度和空间复杂度来度量。
4. 数据的逻辑结构与存储结构的区别和联系是什么?
答:区别:数据的逻辑结构是一个数学模型;数据的存储结构是数据的逻辑结构在计算机内部的存储方式。
联系:一种逻辑结构可以用多种存储结构来存储;一种存储结构可以用来存多种逻辑结构。
5. 算法有什么特性?评价一个算法有几个标准?
答:一个算法应该具有以下五个特性:
(1)有穷性。一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成 (有限步完成)。
(2)确定性。算法中每一条指令必须有确切的含义。不存在二义性。且算法只有一个入口和一个出口(无二义性)。
(3)可行性。一个算法是可行的。即算法描述的操作都是可以通过已经实现的基本运算执行有限次来实现的(每一步都可通过
执行有限次基本操作实现)。
(4)输入性。一个算法有零个或多个输入,这些输入取自于某个特定的对象集合(有零个或多个输入)。
(5)输出性。一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量(有一个或多个输出)。
评价一个算法有以下几个标准:
(1) 正确性。算法应满足具体问题的需求。
(2) 可读性。 算法应该好读。以有利于阅读者对程序的理解。
(3) 健壮性。算法应具有容错处理。当输入非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。
(4) 高效性。指算法执行的时间和执行过程中所需要的最大存储空间要少。一般,这两者与问题的规模有关。
2
思维导图
第二章 线性表
考试大纲
1)理解线性表的定义和基本操作;线性表的抽象数据类型定义;
2)掌握线性表的顺序存储结构及应用方法;
3)掌握线性表的链式存储结构(单链表,双链表,循环链表)。
具体要求:
要求掌握线性表的顺序存储方式下的元素插入、元素删除及线性表遍历算法;要求掌握线性表的链式存储方式下,元素的插入、
元素的删除及线性表遍历算法(带头结点及不带头结点的单链表)
考查要点
1.线性表的定义 从数据对象、元素间的关系、基本操作三方面进行阐述。
2.线性表的两种存储结构及其优缺点
线性表的顺序存储是指在内存中用地址连续的一块存储空间对线性表中的各元素按其逻辑顺序依次存放,用这种存储形式存储
的线性表称为顺序表。线性表的链式存储结构是用一组任意的存储单元存储线性表的各个数据元素。为了表示线性表中元素的
先后关系,每个元素除了需要存储自身的信息外还需保存直接前趋元素或直接后继元素的存储位置。所以,链式存储结构的线
性表其元素之间的逻辑关系是通过结点的指针域来表示的。
顺序存储有
三个优点:
(1)方法简单,用数组,容易实现。
(2)不用为表示结点的逻辑关系而增加额外开销。
(3)具有按元素序号随机访问的特点。
两个缺点:
(1)进行插入、删除时,平均移动表中一半的元素,效率较低。
3
(2)需预先分配足够大的存储空间。空间估计过大,会导致空间闲置(造成浪费);预先分配过小,又会造成溢出。
链表的优缺点恰好与顺序表相反。
与线性表两种存储结构有关的知识有:
线性表中逻辑上相邻的两个元素其存放位置不一定相邻;
线性表的链式存储表示不一定优于顺序存储表示;
链式存储方式以指针表示结点间的逻辑关系;
一个需经常作插入、删除运算的线性表应采用 链式存储结构;
线性表元素个数稳定、很少进行插入和删除操作应采用 顺序存储结构;
若线性表最常用的操作是存取第 i 个元素及其前驱元素的值,则采用 顺序存储方式 最节省运算时间;
在顺序存储结构、链式存储结构上删除元素的平均时间复杂度。
3.线性表的建立、插入、删除、输出
顺序表的类型定义、插入、删除,单链表的建立(头插建立、尾插建立)、插入(后插的基本操作)、删除、输出历来都是重
点。
如删除顺序表中某元素多少元素需移动、在顺序表中插入一个元素有多少元素需移动等。
再如在一个单链表的 p 所指的结点之后插入一个 s 所指的结点的操作、根据单链表结点类型定义写出带头结点单链表的升序插
入、在带头结点单链表中查找元素并返回其地址、删除带头结点单链表中某元素、统计带头结点单链表中元素个数算法(函
数)。
例 1:设有一带头结点的数据域为整型数据的单链表 h,给出单链表结点类型定义,并设计算法输出单链表中的所有元素。
typedef struct node
{ int data;
struct node *next;
} slnode;
void output(slnode *h)
{ slnode *p;
p=h->next;
while(p!=null)
{ printf(“%d”,p->data);
p=p->next;
}
}
例 2 设有一带头结点的数据域为整型数据的单链表 H,给出单链表结点类型定义,并设计算法统计单链表中元素 x 的个数。
typedef struct node
{ int data;
struct node *next;
} slnode;
int tj(slnode *H)
{ slnode *p;
int n=0;
p=H->next;
while(p!=NULL)
{ if (p->data==x) n++;
p=p->next;
}
return n;
4
}
4.单链表头结点的作用
简化运算。
课后习题
顺序表
一.填空题
1. 当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快
的速度存取线性表中的元素时,应采用 顺序 存储结构。
2. 线性表 L=(a1,a2,…,an)用数组表示,假定删除表中任一元素的概率相同,
则删除一个元素平均需要移动元素的个数是(n-1)/2 。
3. 顺序表中查找某个元素时,从前到后查找与从后到前查找的时间复杂度 相同。
4. 在具有 n 个元素的顺序表中插入一个元素,合法的插入位置有 n+1 个。
5. 在一个长度为 n 的顺序表中第 i 个元素(1<=i<=n)之前插入一个元素时,
需向后移动 n-i+1 个元素。
6. 顺序存储结构的线性表中所有元素的地址 一定 连续。
7. 顺序存储结构的线性表其物理结构与逻辑结构是 一致 的。
8. 在具有 n 个元素的顺序存储结构的线性表任意一个位置中插入一个元素,在
等概率条件下,平均需要移动 n/2 个元素。
9. 在具有 n 个元素的顺序存储结构的线性表任意一个位置中删除一个元素,在
等概率条件下,平均需要移动 (n-1)/2 个元素。
10. 在具有 n 个元素的顺序存储结构的线性表中查找某个元素,平均需要比较
(n+1)/2 次。
5
剩余63页未读,继续阅读
beyond谚语
- 粉丝: 3969
- 资源: 46
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0