C
文章平均质量分 84
小小池鱼儿
这个作者很懒,什么都没留下…
展开
-
Makefile 初探
当项目比较小的时候,我们可以手写gcc编译命令编译源文件,但是当工程稍微大一点,就有点晕了,所以Makefile闪亮登场,用来完成大型工程的编译工作。Makefile中定义了一系列规则,哪些文件先编译,哪些文件后编译,哪些文件需要重新编译,甚至更加复杂的操作,Makefile就像一个shell脚本,包含了一系列的操作,比如编译命令,也可以执行操作系统的命令,Makefile的好处就是自动化编译,一...原创 2018-03-31 11:44:55 · 174 阅读 · 0 评论 -
大话数据结构学习笔记 - 图的遍历之深度优先遍历和广度优先遍历
大话数据结构学习笔记 - 图的遍历之深度优先遍历和广度优先遍历图的遍历(Traversing Graph):从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次,这一过程就叫做图的遍历深度优先遍历深度优先遍历介绍深度优先遍历(Depth First Search):也有称为深度优先搜索,简称为DFS。 思想: 从图中某个顶点v出发,访问此顶点,然后从v的未被访...原创 2018-05-28 10:15:10 · 1373 阅读 · 0 评论 -
大话数据结构学习笔记 - 图的最小生成树之Prim算法
大话数据结构学习笔记 - 图的最小生成树之Prim算法最小生成树(Minimum Cost Spanning Tree) 即构造连通图的最小代价生成树Prim算法基本思想对于图G而言,V是所有顶点的集合。现在设置两个新的集合U和T, 其中U用于存放G的最小生成树中的顶点,T存放G的最小生成树中的边。从所有u∈U,v∈(V−U)u∈U,v∈(V−U)u \in U, v \in ...原创 2018-05-28 10:19:36 · 3968 阅读 · 4 评论 -
大话数据结构学习笔记 - 图的最小生成树之Kruskal算法
大话数据结构学习笔记 - 图的最小生成树之Kruskal算法Kruskal算法克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法大话数据结构定义 假设 N=(V,{E})N=(V,{E}) N = (V, \{E\})是连通网,则令最小生成树的初始状态为只有n个顶点而无边的非连通图 T={V,{}}T={V,{}} T = \{V, \{\}\}。图中每...原创 2018-05-28 15:46:00 · 1938 阅读 · 0 评论 -
大话数据结构学习笔记 - 图的最短路径之Dijkstra算法
大话数据结构学习笔记 - 图的最短路径之Dijkstra算法最短路径最短路径是图中的重要问题,对于网图和非网图来说,最短路径的含义也是不同的。由于非网图没有边上的权值,所谓的最短路径,其实就是指两顶点之间经过的边数最少的路径。而对于网图来说,最短路径,是指两顶点之间经过的边上的权值之和最少的路径,并且我们称路径上的第一个顶点是源点,最后一个顶点是终点。当然非网图可以理解为所有边的权值都...原创 2018-06-04 20:09:29 · 1436 阅读 · 1 评论 -
大话数据结构学习笔记 - 图的最短路径之Floyd算法
大话数据结构学习笔记 - 图的最短路径之Floyd算法本文是对网结构最短路径的另一求法,上一节讲的为Dijkstra算法,本节将Floyd算法, 有关于最短路径的讲解也在上一节。Floyd算法算法简介弗洛伊德Floyd算法也是一种在给定的加权图中求最短路径的算法,求的所有顶点到所有顶点的时间复杂度为O(n3)O(n3)O(n^3), 是由1978年的图灵获得者、斯坦福大学计...原创 2018-06-04 20:10:30 · 864 阅读 · 1 评论 -
大话数据结构学习笔记 - 查找之顺序查找、折半查找、插值查找及斐波那契查找
大话数据结构学习笔记 - 查找查找(Searching): 就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)概论概念查找表(Search Table):由同一类型的数据元素(或记录)构成的集合关键字(Key):数据元素中某个数据项的值,又称为键值,用来标识一个数据元素主关键字(Primary Key):若关键字可以唯一的标识一个记录,则...原创 2018-06-05 16:23:35 · 555 阅读 · 0 评论 -
大话数据结构学习笔记 - 排序算法及图解以及C实现
大话数据结构学习笔记 - 排序算法及图解以及C实现概述排序概念 假设含有n个记录的序列为r1,r2,...,rnr1,r2,...,rn {r_{1}, r_{2}, ... , r_{n}} , 其相应的关键字分别为 k1,k2,...,knk1,k2,...,kn {k_{1}, k_{2}, ... , k_{n}} , 需确定1, 2, ... , n的一种排列 p1,...原创 2018-06-12 16:43:01 · 544 阅读 · 0 评论 -
大话数据结构学习笔记 - 查找之二叉排序树(Binary Sort Tree)及其C实现
大话数据结构学习笔记 - 查找之二叉排序树(Binary Sort Tree)及其C实现二叉排序树二叉排序树(Binary Sort Tree):又称为 二叉查找树, 它或者是一个空树,或者是具有下列性质的二叉树若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值它的左、右子树也分别为二叉排序树二叉...原创 2018-06-09 16:38:02 · 440 阅读 · 0 评论 -
大话数据结构学习笔记 - 查找之平衡二叉树(AVL)及其C实现
大话数据结构学习笔记 - 查找之平衡二叉树(AVL)及其C实现平衡二叉树(AVL树)平衡二叉树(Self-Balancing Binary Search Tree 或Height-Balanced Binary Search Tree)是一种二叉排序树, 其中每一个节点的左子树和右子树的高度差至多等于1. 平衡二叉树是高度平衡的二叉排序树,高度平衡即要么是空树,要么其左子树和右子树都...原创 2018-06-10 15:29:00 · 588 阅读 · 0 评论 -
大话数据结构学习笔记 - 线性表、顺序存储、单链表及静态链表
大话数据结构学习笔记之(3) - 线性表、顺序存储、单链表及静态链表定义线性表(List): 零个或多个数据元素的有限序列数学定义: 若将线性表记为(a1,...,ai−1,ai,ai+1,...,an)(a1,...,ai−1,ai,ai+1,...,an) (a_{1}, ..., a_{i-1}, a_{i}, a_{i+1}, ..., a_{n}), 则表中 ai−1ai−1...原创 2018-05-16 21:39:22 · 428 阅读 · 0 评论 -
大话数据结构学习笔记 - 图
大话数据结构学习笔记 - 图图的定义图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为: G(V,E)G(V,E) G(V, E) , 其中G表示一个图, V是图G中顶点的集合,E是图G中边的集合数据元素在线性表中被称为元素,在树中被称为结点,而在图中被称为顶点(Vertext)顶点集合V有穷非空 图中顶点之间的逻辑关系用边来表示,边集可以为空...原创 2018-05-22 22:41:35 · 448 阅读 · 0 评论 -
大话数据结构学习笔记 - 二叉树
大话数据结构学习笔记之(7) - 二叉树二叉树的定义二叉树(Binary Tree)是n(n≥0)n(n≥0)n (n \geq 0) 个结点的有限集合, 该集合或者为空集(称为空二叉树),或者由一个根节点和两棵互不相交的、分别称为根节点的左子树和右子树的二叉树组成二叉树特点特点每个结点最多有两棵子树,故不存在度大于2的结点左子树和右子树是有顺序的,次序不能任意...原创 2018-05-22 11:00:05 · 616 阅读 · 0 评论 -
C 类型限定符
C 类型限定符我们通常用类型和存储类别来描述一个变量。C90还新增了两个属性:恒常性(constancy)和易变性(volatility)。这两个属性可以分别使用关键字const和volatile来声明,以这两个关键字创建的类型是限定类型(qualified type)。C99标准新增了第3个限定符:restrict,用于提高编译器优化。C11标准新增了第四个限定符:_Atomic。C11提供...原创 2018-04-09 22:49:37 · 436 阅读 · 0 评论 -
C 存储类别
C 存储类别C提供了多种不同的模型或存储类别(storage class)在内存中储存数据。要理解这些存储类别,先要复习一些概念和术语。标识符是C语言中用于标识唯一对象的符号,包括变量名、函数名、命令名称或常量名称等。作用域(scope)链接(linkage)存储期(storage duration)作用域(scope)作用域描述程序中可访问标识符的区域,也就是说在程序...原创 2018-04-10 16:35:15 · 573 阅读 · 0 评论 -
C 字符串函数
C 字符串函数C 字符串函数字符串初始化函数memset实现ExampleTip1Tip2Tip3字符串长度函数strlen实现问题参考字符串拷贝函数strcpy实现strncpy实现memcpy实现memmove实现strcpy 与 memcpy区别参考字符串连接函数strcat实现strnc...原创 2018-04-11 11:22:52 · 199 阅读 · 0 评论 -
C 内存对齐
C 内存对齐对于程序员来说,最烦恼最耗时的工作莫过于与内存打交道,但是内存至关重要,不得不对其保持最大的警惕。为什么需要内存对齐?平台原因:不是所有的一欧诺个见平台都能访问任意地址上的任意数据的;某些硬件平台如果访问未对齐的地址,则会报出对齐错误,有些专业的处理器通常不支持访问未对齐地址。性能原因:数据结构(尤其是栈)应该尽可能地在自然边界对其。原因在于,为了访问未对齐的内存,...原创 2018-04-11 17:25:01 · 221 阅读 · 0 评论 -
大端模式和小端模式初探
大端模式和小端模式初探大端模式和小端模式初探字节序模式由来什么是大端和小端大端模式(Big-Endian)小端模式(Little-Endian)示例优缺点为什么会有大小端之分呢如何判断机器的字节序现状常见CPU的字节序常见文件的字节序主机字节序和网络字节序主机字节序网络字节序字节序转换大小端转换网络字节序和主机字节序转换参考...原创 2018-04-11 21:52:53 · 269 阅读 · 0 评论 -
大话数据结构学习笔记 - 栈与队列
大话数据结构学习笔记之(4) - 栈与队列栈栈是限定尽在表尾进行插入和删除操作的线性表。 允许插入和删除的一端称为栈顶(top), 另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构栈是线性表,即具有线性关系,只不过它是一种特殊的线性表,特殊之处在于插入被限制在栈顶, 而删除位置被限制在栈...原创 2018-05-18 22:56:06 · 481 阅读 · 0 评论 -
大话数据结构学习笔记 - 数据结构绪论
大话数据结构学习笔记之(1) - 数据结构绪论概念数据结构:相互之间存在一种或多种特定关系的数据元素的集合数据: 是面熟客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整形、实型等数值类型,还包括字符及声音、图像、视频等非数值类型数据元素: 是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。...原创 2018-05-14 16:12:58 · 212 阅读 · 0 评论 -
大话数据结构学习笔记 - 算法
大话数据结构学习笔记之(2) - 算法定义算法(Algorithm): 解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作算法的特性输入输出:算法具有零个或多个输入,至少有一个或多个输出有穷性: 指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。确定性: 算法的每一步骤都具有确定的含义,...原创 2018-05-14 18:57:15 · 159 阅读 · 0 评论 -
大话数据结构学习笔记 - 树的基础知识
大话数据结构学习笔记之(6) - 树树的定义树(Tree)是 n(n≥0)n(n≥0) n (n \geq 0) 个结点的有限集。n=0n=0n = 0时称为空树。在任意一颗非空树中有且仅有一个特定的称为根(Root)的结点当 n>1n>1 n > 1时,其余结点可分为 m(m>0)m(m&原创 2018-05-22 10:47:52 · 483 阅读 · 0 评论 -
大话数据结构学习笔记 - 查找之散列表查找(哈希表)及C实现
大话数据结构学习笔记 - 查找之散列表查找(哈希表)及C实现概述顺序表查找时,可以使用 ===或 ≠≠\neq 来遍历比较元素与查找值,有相等则查找成功; 有序表查找时, 可以使用<<>>>, 来折半查找,相等时则查找成功. 最终得到元素的存储位置, 但有没有直接通过关键字key得到要查找的记录内存存储位置呢?散列技术是在记录的存储位置和它的关键字之间建立一个...原创 2018-06-10 19:45:19 · 551 阅读 · 0 评论