自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hao555sky

尘世中迷途小书童

  • 博客(62)
  • 收藏
  • 关注

原创 大话数据结构学习笔记 - 排序算法及图解以及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 518

原创 大话数据结构学习笔记 - 查找之散列表查找(哈希表)及C实现

大话数据结构学习笔记 - 查找之散列表查找(哈希表)及C实现概述顺序表查找时,可以使用 ===或 ≠≠\neq 来遍历比较元素与查找值,有相等则查找成功; 有序表查找时, 可以使用<<>>>, 来折半查找,相等时则查找成功. 最终得到元素的存储位置, 但有没有直接通过关键字key得到要查找的记录内存存储位置呢?散列技术是在记录的存储位置和它的关键字之间建立一个...

2018-06-10 19:45:19 518

原创 大话数据结构学习笔记 - 查找之平衡二叉树(AVL)及其C实现

大话数据结构学习笔记 - 查找之平衡二叉树(AVL)及其C实现平衡二叉树(AVL树)平衡二叉树(Self-Balancing Binary Search Tree 或Height-Balanced Binary Search Tree)是一种二叉排序树, 其中每一个节点的左子树和右子树的高度差至多等于1. 平衡二叉树是高度平衡的二叉排序树,高度平衡即要么是空树,要么其左子树和右子树都...

2018-06-10 15:29:00 560

原创 大话数据结构学习笔记 - 查找之二叉排序树(Binary Sort Tree)及其C实现

大话数据结构学习笔记 - 查找之二叉排序树(Binary Sort Tree)及其C实现二叉排序树二叉排序树(Binary Sort Tree):又称为 二叉查找树, 它或者是一个空树,或者是具有下列性质的二叉树若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值它的左、右子树也分别为二叉排序树二叉...

2018-06-09 16:38:02 421

原创 大话数据结构学习笔记 - 查找之顺序查找、折半查找、插值查找及斐波那契查找

大话数据结构学习笔记 - 查找查找(Searching): 就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)概论概念查找表(Search Table):由同一类型的数据元素(或记录)构成的集合关键字(Key):数据元素中某个数据项的值,又称为键值,用来标识一个数据元素主关键字(Primary Key):若关键字可以唯一的标识一个记录,则...

2018-06-05 16:23:35 502

原创 大话数据结构学习笔记 - 图的最短路径之Floyd算法

大话数据结构学习笔记 - 图的最短路径之Floyd算法本文是对网结构最短路径的另一求法,上一节讲的为Dijkstra算法,本节将Floyd算法, 有关于最短路径的讲解也在上一节。Floyd算法算法简介弗洛伊德Floyd算法也是一种在给定的加权图中求最短路径的算法,求的所有顶点到所有顶点的时间复杂度为O(n3)O(n3)O(n^3), 是由1978年的图灵获得者、斯坦福大学计...

2018-06-04 20:10:30 845 1

原创 大话数据结构学习笔记 - 图的最短路径之Dijkstra算法

大话数据结构学习笔记 - 图的最短路径之Dijkstra算法最短路径最短路径是图中的重要问题,对于网图和非网图来说,最短路径的含义也是不同的。由于非网图没有边上的权值,所谓的最短路径,其实就是指两顶点之间经过的边数最少的路径。而对于网图来说,最短路径,是指两顶点之间经过的边上的权值之和最少的路径,并且我们称路径上的第一个顶点是源点,最后一个顶点是终点。当然非网图可以理解为所有边的权值都...

2018-06-04 20:09:29 1403 1

原创 大话数据结构学习笔记 - 图的最小生成树之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 1905

原创 大话数据结构学习笔记 - 图的最小生成树之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 3856 4

原创 大话数据结构学习笔记 - 图的遍历之深度优先遍历和广度优先遍历

大话数据结构学习笔记 - 图的遍历之深度优先遍历和广度优先遍历图的遍历(Traversing Graph):从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次,这一过程就叫做图的遍历深度优先遍历深度优先遍历介绍深度优先遍历(Depth First Search):也有称为深度优先搜索,简称为DFS。 思想: 从图中某个顶点v出发,访问此顶点,然后从v的未被访...

2018-05-28 10:15:10 1332

原创 大话数据结构学习笔记 - 图

大话数据结构学习笔记 - 图图的定义图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为: G(V,E)G(V,E)​ G(V, E) ​, 其中G表示一个图, V是图G中顶点的集合,E是图G中边的集合数据元素在线性表中被称为元素,在树中被称为结点,而在图中被称为顶点(Vertext)顶点集合V有穷非空 图中顶点之间的逻辑关系用边来表示,边集可以为空...

2018-05-22 22:41:35 434

原创 大话数据结构学习笔记 - 二叉树

大话数据结构学习笔记之(7) - 二叉树二叉树的定义二叉树(Binary Tree)是n(n≥0)n(n≥0)n (n \geq 0) 个结点的有限集合, 该集合或者为空集(称为空二叉树),或者由一个根节点和两棵互不相交的、分别称为根节点的左子树和右子树的二叉树组成二叉树特点特点每个结点最多有两棵子树,故不存在度大于2的结点左子树和右子树是有顺序的,次序不能任意...

2018-05-22 11:00:05 579

原创 大话数据结构学习笔记 - 树的基础知识

大话数据结构学习笔记之(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 464

原创 大话数据结构学习笔记 - 栈与队列

大话数据结构学习笔记之(4) - 栈与队列栈栈是限定尽在表尾进行插入和删除操作的线性表。 允许插入和删除的一端称为栈顶(top), 另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构栈是线性表,即具有线性关系,只不过它是一种特殊的线性表,特殊之处在于插入被限制在栈顶, 而删除位置被限制在栈...

2018-05-18 22:56:06 413

原创 大话数据结构学习笔记 - 线性表、顺序存储、单链表及静态链表

大话数据结构学习笔记之(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 376

原创 大话数据结构学习笔记 - 算法

大话数据结构学习笔记之(2) - 算法定义算法(Algorithm): 解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作算法的特性输入输出:算法具有零个或多个输入,至少有一个或多个输出有穷性: 指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。确定性: 算法的每一步骤都具有确定的含义,...

2018-05-14 18:57:15 137

原创 大话数据结构学习笔记 - 数据结构绪论

大话数据结构学习笔记之(1) - 数据结构绪论概念数据结构:相互之间存在一种或多种特定关系的数据元素的集合数据: 是面熟客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整形、实型等数值类型,还包括字符及声音、图像、视频等非数值类型数据元素: 是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。...

2018-05-14 16:12:58 199

原创 C++ 学习笔记之(19) new、delete表达式、RTTI(运行时类型识别)、枚举、类成员指针、嵌套类、局部类、位域、volatile、extern C

C++ 学习笔记之(19) new、delete表达式、RTTI(运行时类型识别)、枚举、类成员指针、嵌套类、局部类、位域、volatile、extern CC++ 学习笔记之(19) new、delete表达式、RTTI(运行时类型识别)、枚举、类成员指针、嵌套类、局部类、位域、volatile、extern C控制内存分配重载new和delete定位new表达式运行时类型识...

2018-05-11 15:31:30 206

原创 C++ 学习笔记之(18)-大型工程工具(异常处理、命名空间和多重继承与虚继承)

C++ 学习笔记之(18)-大型工程工具(异常处理、命名空间和多重继承与虚继承)异常处理异常处理(exception handling)机制能够对程序在运行时就出现的问题进行通信并作出相应的处理。抛出异常C++语言通过 抛出(throwing)表达式来 引发(raised)异常。throw后,程序控制权交给对应的catch模块,即throw后的语句将不再被执行。栈展开...

2018-05-09 10:59:05 249

原创 C++ 学习笔记之(17)-标准库特殊设施(tuple类型、bitset类型、正则表达式、随机数以及IO库再探)

C++ 学习笔记之(17)-标准库特殊设施(tuple类型、bitset类型、正则表达式、随机数以及IO库再探)标准库内容巨大,故仅介绍某些标准库设施:tuple、bitset、正则表达式以及随机数,此外还有一些IO库功能:格式控制、未初始化IO和随机访问tuple类型tuple类似与pair,但pair只有两个成员,tuple却有任意数量的成员定义和初始化tuple...

2018-05-08 15:17:09 212

原创 C++ 学习笔记之(16)-模板与泛型编程

C++ 学习笔记之(16)-模板与泛型编程面向对象编程(OOP)和泛型编程都能处理在编写程序时不知道类型的情况。不同之处在于OOP能处理类型在程序运行之前都未知的情况;而在泛型编程汇总,编译时即可获知类型。定义模板函数模板函数模板就是公式,可用来生成针对特定类型的函数版本。template \template <typename T>int comp...

2018-05-07 21:11:48 264

原创 C++ 学习笔记之(15)-面向对象程序设计

C++ 学习笔记之(15)-面向对象程序设计OOP:概述面向对象程序设计基于三个基本概念:数据抽象、继承和动态绑定。数据抽象:将类的接口与实现分离,详情可在C++ 学习笔记之(7)-类查阅继承:可以定义相似的类型并对其相似关系建模, 继承构建一种层次关系,层次根部为基类,其他类则直接或间接地从基类继承而来,称为派生类动态绑定:在一定程度上忽略相似类型的区别,而以统一的方式使用...

2018-05-05 22:00:23 365

原创 C++ 学习笔记之(14) - 重载运算与类型转换

C++ 学习笔记之(14) - 重载运算与类型转换在C++ 学习笔记之(4)-表达式、运算符与类型转换中记录了C++语言中定义的大量运算符和内置类型的自动转换规则,并且当运算符作用于类类型时,可以通过运算符重载重新定义该运算符的含义。同时,也能自定义类类型之间的转换规则,即和内置类型的转换一样,类类型转换隐式的将一种类型的无锡爱那个转换成另一种类型对象基本概念重载运算符函数的名字...

2018-05-05 11:59:37 160

原创 C++ 学习笔记之(13) - 拷贝控制

C++ 学习笔记之(13) - 拷贝控制本文将学习类如何通过一组函数控制对象拷贝、赋值、移动和销毁,这组函数分别是拷贝构造函数、移动构造函数、拷贝赋值运算符、移动赋值运算符以及析构函数。若类没有显示定义这些拷贝控制成员,则编译器会自动定义。拷贝、赋值与销毁拷贝构造函数如果一个构造函数的第一个参数是自身类类型的引用(几乎总为const引用),且任何额外参数都有默认值,则为拷贝...

2018-05-02 20:07:32 177

原创 C++ 学习笔记之(12) - 动态内存、智能指针和动态数组

C++ 学习笔记之(12) - 动态内存、智能指针和动态数组程序中所使用的对象都有严格定义的生存期。全局对象:在程序启动时分配,程序结束时销毁局部自动对象:程序进入其定义所在块时创建,离开块时销毁局部static对象:第一次使用前分配,程序结束时销毁动态分配对象:显示创建,显示释放内存存放区间静态内存:局部static对象、类static数据成员以及定义在任何函数之外的...

2018-05-01 16:42:18 902

原创 C++ 学习笔记之(11) - 关联容器

C++ 学习笔记之(11) - 关联容器关联容器和顺序容器有着根本的不同,关联容器中的元素是按关键字来保存和访问的,与之相对,顺序容器中的而元素是按照他们在容器中的位置来顺序保存和访问的。关联容器支持高效的关键字查找和访问,关键字起到索引的作用。标准库提供了8个关联容器,它们的不同体现在三个维度上或者是set,或者是map或者要求不重复的关键字; 或者允许重复的关键字,容器名字包含...

2018-04-28 18:03:15 245

原创 C++ 学习笔记之(10) - 泛型算法和迭代器

C++ 学习笔记之(10) - 泛型算法和迭代器C++ 学习笔记之(10) - 泛型算法和迭代器概述初识泛型算法只读算法写容器元素的算法重排容器元素的算法定制操作向算法传递函数lambda表达式参数绑定标准库 bind函数placeholders命名空间bind 的参数bind无法绑定引用参数再探迭代器插入迭代器iostream迭代器istre...

2018-04-28 12:56:35 354

原创 C++ 学习笔记之(9)-顺序容器及适配器

C++ 学习笔记之(9)-顺序容器及适配器C++ 学习笔记之(9)-顺序容器及适配器顺序容器概述容器库概览迭代器 容器类型成员begin和end成员容器定义和初始化将一个容器初始化为另一个容器的拷贝赋值和 swap容器大小操作关系运算符顺序容器操作向顺序容器中添加元素访问元素删除元素特殊的forward_list操作改变容器大小容器操作可能是迭代器...

2018-04-26 16:10:18 159

原创 C++ 学习笔记之(8)-IO 库

C++ 学习笔记之(8)-IO 库IO库定义了读写内置类型值的操作。此外,一些类,如string,会自定义类似IO操作,读写本身对象IO类为了支持不同种类的IO处理操作,比如读写宽字符,string类,文件等,在istream和ostream之外,标准库还定义了其他一些IO类型以w开头的类型用来处理wchar_t类型数据,即宽字符语言IO对象无拷贝或赋值进行I...

2018-04-25 20:52:52 104

原创 C++ 学习笔记之(7)-类

C++ 学习笔记之(7)-类类的基本思想是数据抽象和封装。封装实现了类的接口和实现的分离。数据抽象是依赖于接口和实现分离的编程技术。定义抽象数据类型定义改进的Sales_data类struct Sales_data{ std::string isbn() const { return bookNo; } Sales_data& combine(con...

2018-04-24 22:19:31 153

原创 C++ 学习笔记之(6)-函数、重载和指针

C++ 学习笔记之(6)-函数、重载和指针函数基础函数定义包括以下几个部分 返回类型、函数名字、由0个或多个形参组成的列表以及函数体局部对象C++语言中,名字有作用域,对象有生命周期名字的作用域是程序文本的一部分,名字在其中可见对象的生命周期是程序执行过程中该对象存在的一段时间自动对象存在于块执行期间的对象成为自动对象,即执行到变量定义时创建对象...

2018-04-23 17:04:36 245

原创 C++ 学习笔记之(5)-语句和异常

C++ 学习笔记之(5)-语句和异常C++ 学习笔记之(5)-语句和异常条件语句迭代语句try语句块和异常处理throw 表达式try 语句块标准异常C++ 提供了一组控制流语句以支持更复杂的执行路径条件语句C++语言提供了两种条件语句,if语句和switch语句悬垂else:else与离它最近的尚未匹配的if匹配case 标签必须是整型常量表...

2018-04-20 15:30:17 175

原创 C++ 学习笔记之(4)-表达式、运算符与类型转换

C++ 学习笔记之(4)-表达式、运算符与类型转换C++ 学习笔记之(4)-表达式、运算符与类型转换基础基本概念求值顺序算术运算符逻辑和关系运算符赋值运算符递增和递减运算符、成员访问运算符、条件运算符位运算符sizeof 运算符类型转换算数转换其他隐式类型转换显示转换static_castconst_castreinterpret_castdyna...

2018-04-19 20:09:35 428

原创 C++ 学习笔记之(3)-字符串、向量和数组

C++ 学习笔记之(3)-字符串、向量和数组C++ 学习笔记之(3)-字符串、向量和数组命名空间的using声明标准库类型 string定义和初始化 string 对象string 对象上的操作处理 string 对象中的字符标准库类型 vector定义和初始化 vector 对象其他 vector 操作迭代器介绍使用迭代器迭代器运算数组定义和初始化内...

2018-04-19 10:50:09 253 3

原创 C++ 学习笔记之(2)-变量、类型和限定符

C++ 学习笔记之(2)-变量、类型和限定符C++ 学习笔记之(2)-变量、类型和限定符注释数据类型无符号类型和带符号类型类型转换字面值常量整形和浮点型字面值字符和字符串字面值布尔字面值和指针字面值变量变量定义变量声明和定义的关系复合类型引用指针const 限定符const 引用指针和constconstexpr和常量表达式关于cons...

2018-04-17 17:59:36 270

原创 大端模式和小端模式初探

大端模式和小端模式初探大端模式和小端模式初探字节序模式由来什么是大端和小端大端模式(Big-Endian)小端模式(Little-Endian)示例优缺点为什么会有大小端之分呢如何判断机器的字节序现状常见CPU的字节序常见文件的字节序主机字节序和网络字节序主机字节序网络字节序字节序转换大小端转换网络字节序和主机字节序转换参考...

2018-04-11 21:52:53 255

原创 C 内存对齐

C 内存对齐对于程序员来说,最烦恼最耗时的工作莫过于与内存打交道,但是内存至关重要,不得不对其保持最大的警惕。为什么需要内存对齐?平台原因:不是所有的一欧诺个见平台都能访问任意地址上的任意数据的;某些硬件平台如果访问未对齐的地址,则会报出对齐错误,有些专业的处理器通常不支持访问未对齐地址。性能原因:数据结构(尤其是栈)应该尽可能地在自然边界对其。原因在于,为了访问未对齐的内存,...

2018-04-11 17:25:01 209

原创 C 字符串函数

C 字符串函数C 字符串函数字符串初始化函数memset实现ExampleTip1Tip2Tip3字符串长度函数strlen实现问题参考字符串拷贝函数strcpy实现strncpy实现memcpy实现memmove实现strcpy 与 memcpy区别参考字符串连接函数strcat实现strnc...

2018-04-11 11:22:52 186

原创 C 存储类别

C 存储类别C提供了多种不同的模型或存储类别(storage class)在内存中储存数据。要理解这些存储类别,先要复习一些概念和术语。标识符是C语言中用于标识唯一对象的符号,包括变量名、函数名、命令名称或常量名称等。作用域(scope)链接(linkage)存储期(storage duration)作用域(scope)作用域描述程序中可访问标识符的区域,也就是说在程序...

2018-04-10 16:35:15 541

原创 C 类型限定符

C 类型限定符我们通常用类型和存储类别来描述一个变量。C90还新增了两个属性:恒常性(constancy)和易变性(volatility)。这两个属性可以分别使用关键字const和volatile来声明,以这两个关键字创建的类型是限定类型(qualified type)。C99标准新增了第3个限定符:restrict,用于提高编译器优化。C11标准新增了第四个限定符:_Atomic。C11提供...

2018-04-09 22:49:37 421

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除