
数据结构与算法(C语言)
文章平均质量分 93
Shannon333
目前研一,cv方向小白,努力学习
展开
-
数据结构与算法(C语言) | 线性表(顺序存储、链式存储)
线性表是最常用最简单的线性结构 线性结构具有以下基本特征: 线性结构是一个数据元素的有序(次序)集(处理元素有限)。若该集合非空,则1)必存在唯一的一个“第一元素”;2)必存在唯一的一个“最后元素”;3)除第一元素之外,其余每个元素均有唯一的前驱;4)除最后元素之外,其余每个元素均有唯一的后继。 抽象数据类型(ADT)格式:ADT 抽象数据类...原创 2018-04-17 20:15:21 · 7307 阅读 · 1 评论 -
数据结构与算法 | 哈希表
哈希表(hash table)是从一个集合A到另一个集合B的映射(mapping)。映射是一种对应关系,而且集合A的某个元素只能对应集合B中的一个元素。但反过来,集合B中的一个元素可能对应多个集合A中的元素。如果B中的元素只能对应A中的一个元素,这样的映射被称为一一映射。映射在数学上相当于一个函数f(x):A->B。哈希表的核心是一个哈希函数(hash function),这个函数规...原创 2018-08-28 11:10:42 · 692 阅读 · 0 评论 -
数据结构与算法(C语言) | 拓扑排序、关键路径
拓扑排序一个无环的有向图称为无环图(Directed Acyclic Graph),简称DAG图。在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,我们称之为AOV网(Active On Vertex Network)。AOV网不能存在回路!拓扑序列:设G=(V,E)是一个具有n个顶点的有向图,V中的顶点序列V1,V2,……,Vn...原创 2018-08-22 11:03:48 · 3499 阅读 · 0 评论 -
数据结构与算法(C语言) | 图——最短路径
在网图和非网图中,最短路径的含义是不同的。–网图是两顶点经过的边上权值之和最少的路径。–非网图是两顶点之间经过的边数最少的路径。(可以理解为边上权值为1的图) 我们把路径起始的第一个顶点称为源点,最后一个顶点称为终点。所谓单源最短路径问题,就是从某一顶点v0 出发,找从它到图中其他各个顶点的最短路径。 –迪杰斯特拉算法(Dijkstra):求解单源最短路径问题的算法基本...原创 2018-08-20 16:57:36 · 7655 阅读 · 0 评论 -
数据结构与算法(C语言) | 图的基本定义及存储结构
•图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。•注意的地方:–线性表中我们把数据元素叫元素,树中叫结点,在图中数据元素我们则称之为顶点(Vertex)。–线性表可以没有数据元素,称为空表,树中可以没有结点,叫做空树,而图结构在咱国内大部分的教材中强调顶点集合V要有穷非空。–...原创 2018-08-18 17:48:23 · 23885 阅读 · 1 评论 -
数据结构与算法(C语言) | AVL树
AVL树,是一种平衡(balanced)的二叉搜索树。 二叉平衡树是二叉查找树(二叉排序树)的另一种形式,其特点为:树中每个结点的左、右子树深度之差的绝对值不大于1 。关于AVL树的操作,大部分都能复用平衡二叉树树的操作,但是对于插入和删除操作来说,很可能由于节点的插入和删除导致AVL树的平衡状态就被破坏,所以我们需要一种机制来检测这棵树是否平衡,以及当它不平衡的时候,我们应该...原创 2018-08-28 09:30:01 · 800 阅读 · 0 评论 -
数据结构与算法(C语言) | 二叉排序树
二叉排序树的定义——二叉排序树 ( Binary Sort Tree) 或者为空;或者是具有如下特性的二叉树:(1)若根的左子树不空,则左子树上所有结点的关键字均小于根结点的关键字;(2)若根的右子树不空,则右子树上所有结点的关键字均大于根结点的关键字;(3)根的左、右子树也分别是二叉排序树。 一棵二叉排序树的中序遍历结果:关键字按从小到大的顺序排列。二叉排序树...原创 2018-08-22 15:54:14 · 1305 阅读 · 0 评论 -
数据结构与算法(C语言) | 图的遍历及最小生成树问题
图的遍历从图中某个顶点出发系统地访问图中所有顶点,使得每个顶点仅被访问一次,这一过程称作图的遍历。 深度优先搜索 ——连通图的深度优先搜索遍历:从图中某个顶点V0 出发,访问此顶点,然后依次从V0的各个未被访问的...原创 2018-08-19 22:09:49 · 6808 阅读 · 3 评论 -
数据结构与算法(C语言) | 树和二叉树(一)树的基本定义及基本术语
一对多的数据结构:树、 树(Tree)是n(n>=0)个结点(数据元素)的有限集。在任意一棵非空树中:–有且仅有一个特定的称为根(Root)的结点;–当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、...、Tm,其中每一个集合本身又是一棵树,并且称为根的子树...原创 2018-08-09 16:41:18 · 1299 阅读 · 0 评论 -
数据结构与算法(C语言) | 栈和队列——栈
栈是一种重要的线性结构,通常称,栈和队列是限定插入和删除只能在表的“端点”进行的线性表。(后进先出)–栈的元素必须“后进先出”。–栈的操作只能在这个线性表的表尾进行。–注:对于栈来说,这个表尾称为栈的栈顶(top),相应的表头称为栈底(bottom)。•因为栈的本质是一个线性表,线性表有两种存储形式,那么栈也有分为栈的顺序存储结构和栈的链式存储结构。•最开始栈中不含有任何数据,...原创 2018-08-04 22:12:13 · 25250 阅读 · 6 评论 -
数据结构与算法(C语言) | 字符串及KMP算法
字符串的存储结构字符串的存储结构与线性表相同,也分顺序存储结构和链式存储结构。字符串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列的。 BF算法——Brute Force 属于朴素的模式匹配算法(效率低下):–有两个字符串S和T,长度为N和M。首先S[1]和T[1]比较,若相等,则再比较S[2]和T[2],一直到T[M]为止;若S[1]和T[1]不等,则T向右移动...原创 2018-08-08 17:52:20 · 843 阅读 · 0 评论 -
数据结构与算法(C语言) | 树之间的转化及赫夫曼编码
森林与二叉树的转换 树与二叉树之间存在着必然联系——任意给定一棵树,可以找到唯一一棵二叉树与之对应。 二叉链表存储结构相同的树和二叉树相互对应。 任何一棵和树对应的二叉树,其右子树必空。 树和二叉树各部分的对应关系(...原创 2018-08-12 23:24:51 · 640 阅读 · 0 评论 -
数据结构与算法(C语言) | 递归和分治思想
递归递归实际上是一种效率较为低下的算法。斐波那契数列的递归实现:斐波那契数列用数学函数来定义: 0,当n=0F(n) = 1,当n=1 F(n-1)+F(n-2),当n>1 迭代#inclu...原创 2018-02-22 22:08:40 · 775 阅读 · 2 评论 -
数据结构与算法(C语言) | 栈和队列——队列
队列 •与栈相反,队列是一种先进先出(First In First Out, FIFO)的线性表。只允许在表尾一端进行插入操作而在表头一端进行删除操作。 队列既可以用链表实现,也可以用顺序表实现。跟栈相反的是,栈一般我们用顺序表来实现,而队列我们常用链...原创 2018-08-06 11:37:43 · 1066 阅读 · 0 评论 -
数据结构与算法(C语言) | 树和二叉树 (三)二叉树的遍历和线索二叉树
二叉树的遍历 “遍历”是任何类型均有的操作,对线性结构而言,只有一条搜索路径(因为每个结点均只有一个后继),故不需要另加讨论。而二叉树是非线性结构,每个结点都可能有两个后继,则存在如何遍历即按什么样的搜索路径遍历的问题。 二叉树的遍历(traversing binary...原创 2018-08-10 22:10:17 · 662 阅读 · 0 评论 -
数据结构与算法(C语言) | 树和二叉树 (二)二叉树
二叉树的定义:二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。二叉树与树的区别: 二叉树不是树的特殊情形,而是与树不同的数据结构,即二叉树并不等价于2 度的树。1)一个二叉树中可以不存在度为2的结点。(不是都需要两棵子树,而是最多可以是两棵,没...原创 2018-08-09 18:19:38 · 3590 阅读 · 0 评论 -
数据结构与算法(C语言) | 排序算法
排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。——–假设含有n个记录的序列为{r1,r2,…,rn},其相应的关键字分别为{k1,k2,…,kn},需确定1,2,…,n的一种排列p1,p2,…pn,使其相应的关键字满足kp1<=kp2<=…<=kpn非递减(或非递增)关系,即使得序列成为一个按关键字有序的序列{rp1,rp2,…...原创 2018-08-21 17:27:00 · 1082 阅读 · 0 评论