数据结构和算法
LQJW
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构 (一)试水篇
绪论 1.1 数据结构的目的 数据结构作为计算机科学的一门分支科学,主要研究非数值计算的程序设计问题中计算机的操作对象、对象之间的关系和操作等。 数据结构的三要素为数据的逻辑结构、数据的存储结构以及数据的操作。 有一个著名的公式:程序=数据结构+算法 1.2 数据结构的基本概念 数据:所有能输入到计算机中的去描述客观事务的符号 数据项:有独立含义的数据的最小单位 (描述事物的其中一项指...原创 2019-07-13 09:53:40 · 176 阅读 · 0 评论 -
算法 (二)查找--千形万态
查找: 用关键字标识一个数据元素,查找时根据给定的某个值,在表中确定一个关键字的值等于给定值的记录或数据元素。 1、顺序查找 从线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于k的结点,表示查找失败。 //顺序查找 int order_find(int *arr, int key, int n) { i...原创 2019-08-15 12:32:46 · 200 阅读 · 0 评论 -
数据结构 (五)树之五花八门篇
普通二叉树:对二叉树的结点没有位置及数量上的要求 满二叉树: 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。 有序二叉树(又称二叉排序树,又称二叉查找树,亦称二叉搜索树):左子树的所有结点都比双亲小,右子树的所有结点都比双亲大 平衡二叉树:左右高度相差不超过1的有序二叉树 (首先...原创 2019-07-28 15:51:06 · 198 阅读 · 0 评论 -
数据结构 (四)树之删除结点篇
删除树的结点是树的操作之中相对比较复杂的。 本文基于二叉排序树的基础上进行树的结点删除操作,删除结点后还要保持二叉树的有序。 考虑三种情况: (1)要删除的是叶结点:先查找到这个结点,直接删除, 并再修改其父结点指针---置为NULL 图1 (2)要删除的结点只有一个孩子结点: 将其父结点的指针指向要删除结点的孩子结点 图1图2图3 ...原创 2019-07-28 14:53:06 · 2599 阅读 · 0 评论 -
数据结构 (三)树篇
树 是一种元素之间存在一对多关系的数据结构,常用于表示族谱关系、组织结构,也可以借助特殊的树型结构实现辅助排序,查找等,根在上,支在下 ,一般以倒悬树的形式显示 一、树的定义: 树是n(n>=0)个结点的有限集 (1)有且只有一个特定的结点称为根结点 (2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2..Tm,其中每个集合本身又是一棵树,并且称为...原创 2019-07-28 11:43:41 · 261 阅读 · 0 评论 -
算法 (一)递归--恐怖如斯
递归( recursion):程序调用自身的编程技巧。 一、递归的概念 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法 它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解 递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。 一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满...原创 2019-08-04 23:29:51 · 356 阅读 · 1 评论 -
数据结构 (七)图之深度遍历和广度遍历篇
图的遍历是指从图中某一个顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次 图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础 由于图结构本身的复杂性,所以其遍历也较复杂,主要体现在: (1)图中任意一个顶点可作为第一个被访问的顶点 (2)如何选取不同连通分量上的访问出发点 (3)图中如果有回路,可能重复访问 (4)如何选取下一个要访问的邻接点 注:图的遍历结果无论是深度...原创 2019-08-04 18:28:08 · 1614 阅读 · 0 评论 -
数据结构 (六)图篇
图: 由顶点的有穷非空集合和顶点之间边的集合组成 图的基本概念: 在图型数据结构中,数据被称为顶点,数据之间的关系被称为边 在图中不允许出现没有点,但可以没有边 G(V,E) V表示顶点的集合, E表示边的集合 图的种类: 无向图:顶点与顶点之间的边没有方向,这种边称为无向边,边用无向序偶对表示(v,v1) V={A,B,C,D} E={(A,B),(B,C),(C,D),(D,...原创 2019-08-04 10:43:48 · 685 阅读 · 0 评论 -
数据结构 (二)线性表篇
线性结构(表)——C语言实现(关键代码) 1.表 1.1顺序表(存储结构) 1.设计数据结构 typedef struct Array { TYPE* base; // 数组首地址 size_t size; // 元素的个数 }Array; 2.分析所具备的算法 // 创建 Array* create_array(size_t len); /...原创 2019-07-13 15:34:57 · 176 阅读 · 0 评论 -
算法 (三)排序--各显神通
排序 排序算法的稳定性:当序列中有相同的数据量,算法会不会改变这两个数据的前后位置 1、冒泡 是一种稳定排序,在排序过程中可以监测到数据是否已经有序(对数据的有序性敏感),可以立即停止,如果待排序的数据基本有序,则冒泡的效率是非常高的 冒泡排序在初始关键字序列为逆序的情况下执行的交换次数最多 // 冒泡排序 void bubble_sort(int* arr,size_t l...原创 2019-08-16 13:26:18 · 205 阅读 · 0 评论
分享