- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构知识点总结(详细无题目)
数据结构知识点总结
内容概要:
基本概念——线性表——栈与队列——树与二叉树——图——查找算法——排序算法
基本概念
1、数据元素是数据的基本单位。
2、数据项是数据不可分割的最小单位。
3、数据结构的
逻辑结构(抽象的,与实现无关)
物理结构(存储结构) 顺序映像(顺序存储结构)位置“相邻”
非顺序映像(链式存储结构)指针表示关系
4、算法特性:算法具有正确性、有穷性,确定性,(可行性)、输入,输出
正确性:能按设计要求解决具体问题,并得到正确的结果。
有穷性:任何一条指令都只能执行有限次,即算法必须在执行有限步后结束。
确定性:算法中每条指令的含义必须明确,不允许由二义性
可行性:算法中待执行的操作都十分基本,算法应该在有限时间内执行完毕。
输入:一个算法的输入可以包含零个或多个数据。
输出:算法有一个或多个输出
5、算法设计的要求:
(1)正 确 性:算法应能满足设定的功能和要求 。
(2)可 读 性:思路清晰、层次分明、易读易懂 。
(3)健 壮 性:输入非法数据时应能作适当的反应和处理。
(4)高 效 性(时间复杂度):解决问题时间越短,算法的效率就越高。
(5)低存储量(空间复杂度):完成同一功能,占用存储空间应尽可能少。
线性表
1、线性表 List:最常用且最简单的数据结构。
含有大量记录的线性表称为文件。
2、线性表是n个数据元素的有限序列。
线性结构的特点: ①“第一个” ②“最后一个” ③前驱 ④后继。
3、顺序表——线性表的顺序存储结构
特点
a) 逻辑上相邻的元素在物理位置上相邻。
b) 随机访问。
typedef struct{
DataType elem[MAXSIZE];
int length;
} SqList;
表长为n时,线性表进行插入和删除操作的时间复杂度为O(n)‘
插入一个元素时大约移动表中的一半元素。
删除一个元素时大约移动表中的(n-1)\2
4、线性表的链式存储结构
类型定义
简而言之,“数据 + 指针”。
typedef struct LNode {
DataType data;
struct LNode *next;
} LNode, *LinkList;
不带头结点的空表判定为 L= =null
带头结点的空表判定为 L-next= =null
循环单链表为空的判定条件为 L.next= =L
线性链表的最后一个结点的指针为NULL
头结点的数据域为空,指针域指向第一个元素的指针。
5、顺序表和单链表的比较
顺序表 单链表 以地址相邻表示关系 用指针表示关系 随机访问,取元素O(1) 顺序访问,取元素O(n) 插入、删除需要移动元素O(n) 插入、删除不用移动元素O(n)(用于查找位置) 6、顺序存储:优点:存储密度大,可随机存储
缺点:大小固定;不利于增减节点;存储空间不能充分利用;容量难扩充
链式存储:优点:易于插入删除;可动态申请空间;表容量仅受内存空间限制
缺点:增加了存储空间的开销;不可以随机存储元素
栈与队列
1、栈
栈:限定仅在表尾进行插入或删除操作的线性表。
栈顶:表尾端
栈底:表头
栈是先进后出的线性表。
插入栈顶元素称为入栈,删除栈顶元素称为出栈。
2、栈分为链栈和顺序栈
·链栈
用不带头结点的单链表实现。
·顺序栈
类似于顺序表,插入和删除操作固定于表尾。
3、队列
先进先出的线性表。
队尾入队 对头出队
允许插入的一端叫做队尾
允许删除的一端叫做对头
4、链队列
·
5、 循环队列
typedef struct {
DataType elem[MAXSIZE];
int front, rear; // 队头、队尾位置
} SqQueue;
·循环队列判断队空的条件为 front=rear
循环队列判断队满的条件为 (rear+1)%m=front
在一个循环队列中删除元素时,首先需要后移队首指针。
6、栈与队列比较:都是线形结构,栈的操作LIFO(后进先出),队列操作FIFO(先进先出)。
树和二叉树
树的定义
树(Tree):是 n(n≥0)个有限数据元素的集合。
在任意一棵非空树T中:
(1)有且仅有一个特定的称为树根(Root)的结点,根结点无前趋结点;
(2)当n1时,除根结点之外的其余结点被分成m(m0)个互不相交的集合T1,T2,…,Tm,其中每一个集合Ti(1≤ i ≤m)本身又是一棵树,并且称为根的子树。
基本术语:
结点的度数:结点的非空子树(即后缀)个数叫作结点的度数
树叶、分支结点:左(右)子树均为空二叉树的结点称作树叶否则称作
文档评论(0)