数据结构(c语言版)文摘
第一章 绪论
数据结构:是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。
数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据项:数据的不可分割的最小单位。
数据对象:性质相同的数据元素的集合,是数据的一个子集。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
结构:数据元素相互之间的关系。1.集合 2.线性结构 3.树形结构 4.图状结构
逻辑结构:数据元素之间的逻辑关系。
物理结构(存储结构):在计算机中的表示。
(顺序映像)顺序存储结构:元素的相对位置。
(非顺序映像)链式存储结构:元素存储地址的指针。
数据类型:是一个值的集合和定义在这个值集上的一组操作的总称。
1.非结构的原子类型 2,结构类型
抽象数据类型:是指一个数学模型以及定义在该模型上的一组操作。
1.原子类型 2.固定聚合类型 3.可变聚合类型
算法:是对特定问题求解的一种描述 1。有穷性 2。确定性 3。可行性。4。输入 5。输出
算法设计的要求:1.正确性 2.可读性 3.健壮性 4.效率与低存储量需求
频度:该语句重复执行的次数。
第二章 线性表
线性结构的特点:1."第一个"。2.“最后一个”。3.“只有一个前驱”。4.“只有一个后继”
一个线性表是n个数据元素的有限序列,含有大量记录的线性表又称文件。
线性表的顺序表示:用一组地址连续的存储单元依次存储线性表的数据元素。顺序表,随机存取。
插入移动数据:n-i+1。删除:n-i。平均移动表中一半元素。
移动,删除 O(n); union,O(a.length*b.length); 顺序表的合并(O(a.length+b.length));
线性表的链式表示:用一组任意的存储单元存储线性表的数据元素。数据域,指针域。一个指针域,单链表
头结点:第一个结点之前附设一个结点。
插入:s->next = p->next; p->next=s; 删除:p->next = p->next->next; O(n)
数组描述的链表叫静态链表。
循环链表 双向链表
一元多项式的表示及相加
第三章 栈和队列
3.1 栈
栈:限定只在表尾进行插入或杉树的线性表。表尾为栈顶,表头为栈底。
栈:后进先出。入栈:插入元素。出栈:删除栈顶元素。
栈的存储方法:1.顺序栈 2.链式
3.2 栈的应用举例:1.数制转换 2.括号匹配的检验 3.行编辑程序 4.迷宫求解 5.表达式求解
3.3 栈与递归的实现
3.4 队列
队列:先进先出。表的一端进行插入,一端进行删除。插入的一端叫队尾,删除的一端叫队头。
双端队列
链队列
循环队列
3.5离散事件模拟
第四章 串
4.1 串是由零个或多个字符组成的有限序列。
4.2 串的表示和实现 1.定长顺序存储表示 2.堆分配存储表示 3.串的块链存储表示
4.3 串的模式匹配算法
4.4 串操作应用举例 1.文本编辑 2.建立词索引表
第五章 数组和广义表
5.1数组的定义
5.2数组的顺序表示与实现 1.以列序为主序的存储方式 2.以行序为主序的存储方式
5.3 矩阵的压缩存储:为多个值相同的元只分配一个存储空间;对零元不分配空间。
特殊矩阵:值相同的元素或者零元素在矩阵中的分布有一定规律
稀疏矩阵:值相同的元素或者零元素在矩阵中的分布没有规律。1。三元组顺序表 2。行逻辑链接的顺序表 3.十字链表
5.4 广义表的定义 (列表)
1.列表是一个多层次的结构 2.列表可以为其他列表所共享 3.列表可以是一个递归的表
5.5 广义表的存储结构 链式存储
第六章 树和二叉树
6.1 树的定义和基本术语
a.嵌套集合 b.广义表的形式 c.凹入表示法
结点拥有的子树数称为结点的度,度为0的结点称为叶子或终端结点,度不为0的结点称为非终端结点或分支结点。
树的度是树内各节点的度的最大值。孩子,双亲,兄弟,祖先,子孙。
树中结点的最大层次称为树的深度或高度。
从左到右有次序叫有序树。森林是m棵互不相交树的集合。
6.2 二叉树
每个结点至多只有两棵子树,二叉树中不存在度大于2的结点,子树有左右之分。
二叉树的5种基本形态:1.空二叉树 2.仅有根节点 3.右子树为空 4.左子树为空 5.左右子树非空
二叉树的性质:1.在二叉树的第i层至多有2(i-1)次方个结点
2.深度为K的二叉树至多有2的k次方-1个结点
3.对任何一棵二叉树终端结点数为n0,度为2的结点数为n2,则n0=n2+1
深度为K且有2的K次方-1个结点的二叉树为满二叉树
完全二叉树:从1到N的结点一一对应。
4.具有n个结点的完全二叉树的深度为[log2n]+1
5.....
二叉树的存储结构:1顺序存储结构 2.链式存储结构 二叉链表,三叉链表
6.3 遍历二叉树和线索二叉树
遍历二叉树:
1.先序遍历 根左右
2.中序遍历 左根右
3.后序遍历 左右根
线索链表,线索,线索二叉树,线索化
6.4 树和森林
树的存储结构:1.双亲表示法 2.孩子表示法 3.孩子兄弟表示法
森林和二叉树的转换:1.森林转化为二叉树 2.二叉树转化为森林
1.先序遍历森林 2.中序遍历森林
6.6 赫夫曼树及其应用
赫夫曼树(最优二叉树):带权路径长度最小的二叉树
赫夫曼编码
第七章 图
7.1 图的定义和术语
7.2 图的存储结构
1.数组表示法 2.邻接表 3.十字链表 4.邻接多重表
7.3 图的遍历
1.深度优先搜索 2.广度优先搜索
7.4 图的连通性问题
7.5 有向无环图及其应用
7.6 最短路径
第八章 动态存储管理
第九章 查找
静态查找(1.查询,2检索属性),动态查找(3.插入,4.删除),主关键字(唯一标示一个记录),次关键字
静态查找:
1.顺序查找:从表中最后一个记录开始,逐个比较。平均查找长度:n+1/2(n大时,效率低,算法简单适用面广)
2.折半查找:平均查找长度:log2(n+1)-1 (限于顺序存储结构,线性链表无法查找)(只适用于有序表)
斐波那契查找,插值查找
3.静态树表的查找(次优查找树) 查找概率不等
4.索引顺序表的查找,分块查找
动态查找:二叉排序树,平衡二叉树,B-树,B+树,键树(数字查找树)
哈希表
第十章 内部排序
稳定(排序后的序列和排序前一样),不稳定(排序后的序列和排序前不一样)
10.2 插入排序
直接插入排序 希尔排序
10.3 交换排序
冒泡排序 快速排序
10.4 选择排序
简单选择排序 堆排序
10.5 归并排序
归并排序
第十一章 外部排序
第十二章 文件
数据结构(c语言版)文摘的更多相关文章
- 数据结构C语言版 有向图的十字链表存储表示和实现
/*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...
- 数据结构C语言版 表插入排序 静态表
数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./* 数据结构C语言版 表插入排序 算法10.3 P267-P270 编译 ...
- 数据结构C语言版 弗洛伊德算法实现
/* 数据结构C语言版 弗洛伊德算法 P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...
- 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明
<数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑 链接☛☛☛ <数据结构>课本源码合辑 习题集全解析 链接☛☛☛ ...
- c++学习书籍推荐《清华大学计算机系列教材:数据结构(C++语言版)(第3版)》下载
百度云及其他网盘下载地址:点我 编辑推荐 <清华大学计算机系列教材:数据结构(C++语言版)(第3版)>习题解析涵盖验证型.拓展型.反思型.实践型和研究型习题,总计290余道大题.525道 ...
- 【数据结构(C语言版)系列二】 栈
栈和队列是两种重要的线性结构.从数据结构角度看,栈和队列也是线性表,但它们是操作受限的线性表,因此,可称为限定性的数据结构.但从数据类型角度看,它们是和线性表大不相同的两类重要的抽象数据类型. 栈的定 ...
- 深入浅出数据结构C语言版(5)——链表的操作
上一次我们从什么是表一直讲到了链表该怎么实现的想法上:http://www.cnblogs.com/mm93/p/6574912.html 而这一次我们就要实现所说的承诺,即实现链表应有的操作(至于游 ...
- 深入浅出数据结构C语言版(8)——后缀表达式、栈与四则运算计算器
在深入浅出数据结构(7)的末尾,我们提到了栈可以用于实现计算器,并且我们给出了存储表达式的数据结构(结构体及该结构体组成的数组),如下: //SIZE用于多个场合,如栈的大小.表达式数组的大小 #de ...
- 【数据结构(C语言版)系列三】 队列
队列的定义 队列是一种先进先出的线性表,它只允许在表的一端进行插入,而在另一端删除元素.这和我们日常生活中的排队是一致的,最早进入队列的元素最早离开.在队列中,允许插入的一端叫做队尾(rear),允许 ...
随机推荐
- nats 学习 集群ha 配置
nats 的ha 是一个mesh 的结构,有两个主要的参数 clusters routers 启动三分节点(单机) 共享变量 SERVERS=nats://127.0.0.1:6222,nats: ...
- nexus 使用Raw Repositories 进行maven site 发布
实际项目中我们可能需要进行maven 项目的site 文档发布,一般的处理是生成之后,然后在进行发布到一个静态 服务器进行页面访问,nexus3 提供了一个Raw Repositories 很方便可以 ...
- 打造基于jQuery的智能选择输入框
UPDATE:修正了在FireFox下显示的问题,重新copy CSS即可 写完这个名字忽然觉得有点标题党的嫌疑,但是又不知道什么样的名字比较合适,那就暂且这样吧. 今天要讲的东西比较简单,其中会用到 ...
- 写写Django中DRF框架概述以及序列化器对象serializer的构造方法以及使用
写写Django中DRF框架概述以及序列化器对象serializer的构造方法以及使用 一.了解什么是DRF DRF: Django REST framework Django REST framew ...
- [LeetCode系列] 最长回文子串问题
给定字符串S, 找到其子串中最长的回文字符串. 反转法: 反转S为S', 找到其中的最长公共子串s, 并确认子串s在S中的下标iS与在S'中的下标iS'是否满足式: length(S) = iS ...
- CCFlow SDK模式开发(有比较详细的代码,以服务的形式与ccflow数据库进行数据交互)
http://www.cnblogs.com/s0611163/p/3963142.html 需求: 1.业务数据要保存在我们自己的数据库里 2.CCFlow有保存草稿的功能,但是领导要求每个 ...
- Httpclient 支持https(转)
参考:https://jingyan.baidu.com/article/154b46317353d228ca8f4112.html 参考:https://www.jianshu.com/p/a444 ...
- 阿里云OSS linux使用备忘录
ossutil config example: accessKeyId = "AccessKeyId"; accessKeySecret = "AccessKeySecr ...
- HTML第三讲(选择符)
本次课程讲CSS中的选择符 1.基本选择符 基本选择符有三个 1.标记名选择符 所谓的标记名选择符就是直接在样式中使用标记名定义,譬如以下代码: (此种选择符的特点是所有相同的标记名可以同时定义不需要 ...
- QT win 安装配置
QT windows 版安装配置 安装包:链接:https://pan.baidu.com/s/1LCj2V3xQ1wB9_7zmE5tV6Q 密码:bn9r 首先安装QT Creator 双击安装文 ...