自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Catherine的笔记

业精于勤荒于嬉,行成于思毁于随。

  • 博客(159)
  • 资源 (5)
  • 问答 (2)
  • 收藏
  • 关注

原创 编程工作准则

编程的八荣八耻以动手实践为荣,以只看不练为耻。以打印日志为荣,以出错不报为耻。以局部变量为荣,以全局变量为耻。以单元测试为荣,以手工测试为耻。以代码重用为荣,以复制粘贴为耻。以多态应用为荣,以分支判断为耻。以定义常量为荣,以魔法数字为耻。以总结思考为荣,以不求甚解为耻。程序员的八荣八耻以塌实编码为荣,以心浮气躁为耻。以详细注释为荣,以注释残缺为耻。 以勤于测试为荣,以懒于测试

2015-07-02 23:59:35 753 3

原创 文本过滤与处理

文本过滤与处理1. cat指令:连接文件并显示内容2. more指令:文件内容分屏查看器3. less指令:分屏显示文件内容4. grep指令:在文件中搜索匹配的行5. head指令:显示文件的头部内容6. tail指令:输出文件尾部内容7. wc指令:统计文件的字节数、单词数和行数8. uniq指令:报告或忽略文件中的重复行9. cut指令:删除文件中的指定字...

2018-06-29 00:36:21 2800

原创 因特网的路由选择协议

因特网的路由选择协议1. 路由选择协议1.1 理想路由算法应具备的特点注:路由选择协议的核心就是路由算法。一个实际的路由选择算法,应尽可能接近于理想的算法,在不同的应用条件下,对以下提出的六方面也可有不同的侧重。 (1)算法必须是正确的和完整的。 (2)算法在计算上应简单。 (3)算法应能适应通信量和网络拓扑的变化。 (4)算法应具有稳定性。 (5)算法应是公平的。 (6)算法应是最佳的——相

2017-05-21 01:57:33 5198

原创 网际控制报文协议ICMP

网际控制报文协议ICMP1. 网际控制报文协议ICMP(Internet Control Message Protocol)ICMP:是因特网的标准协议,但不是高层协议,而是IP层的协议。ICMP:是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。ICMP报文:作为IP层数据报的数据,加上数据报的首部,组成IP数据报发生出去。ICMP报文的格式如下: 注意: 1.在

2017-04-10 23:38:31 4295

原创 二叉树(Binary Tree)

二叉树(Binary Tree)1. 二叉树的概念及其特点二叉树是树形结构的一种重要类型。二叉树是每个结点最多有两个子树的树结构,通常子树被称作“左子树(left subtree)“和“右子树(right subtree)”。二叉树的子树有左、右之分,其子树的次序不能颠倒。注:二叉树是递归定义的,分支数最大不超过2的有根有序树。2. 二叉树的五种不同形态空二叉树,一个结点也没有,如图(1)。只有

2017-03-26 22:22:20 1703 1

原创 无分类编址CIDR(构造超网)

无分类编址CIDR(构造超网)1. 无分类编址CIDR(Classless Inter-Domain Routing,读音“sider”)无分类编址:即无类别域间路由。无分类编址:是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP),再由ISP分配给客户。无分类编址:将路由集中起来,使一个IP地址代表主要骨干提供商服务的几千个IP地址,从而减轻Internet路由器的负担。2

2017-03-26 18:04:36 14658

原创 IP子网划分

IP子网划分1. 划分子网划分子网:又称作“子网寻址”或“子网路由选择”。IP子网划分:实际上就是设计子网掩码的过程。注:当没有划分子网时,IP地址为两级结构(IP地址::={<网络号>,<主机号>})。当划分了子网后,IP地址为三级结构(IP::={<网络号>,<子网号>,<主机号>}),划分子网只是把IP地址的主机号host-id进行再划分,而不改变IP地址原本的网络号net-id。2. 子网掩码(

2017-03-26 16:21:57 15804

原创 IP层转发分组的流程

IP层转发分组的流程1. 根据目的网络地址来确定下一跳路由器,这样做的结果如下:1.1 IP数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。1.2 只有到达最后一个路由器时,才试图向目的主机进行直接交付。注:在互联网上转发分组时,是从一个路由器转发到下一个路由器。总之,在路由表中,对每一条路由最主要的是以下两个信息:(目的网络地址,下一跳地址)。2. 特定主机路由

2017-02-06 22:12:39 10275 2

原创 树(Tree)

树(Tree)1. 树的概念树形结构是以分支关系定义的层次结构,是一类重要的非线性数据结构。树是包含n(n>0)个结点的有穷集,也就说树是由一个集合以及在该集合上定义的一种关系构成的。树可分为无根树(自由树、无序树)和有根树(系统树、有序树)。 (1)无根树(unrooted tree): 在离散数学中指无环连通无向图。 (2)有根树(rooted tree):指具有方向的系统发生树(phylogen

2016-10-11 22:33:25 8357

原创 广义表(Generalized List)

广义表(Generalized List)1. 广义表的概念1.1 广义表的定义广义表(Generalized List,又称列表,或表)是一种非线性的数据结构,是线性表的一种推广。广义表中放松对表元素的原子限制,容许它们具有其自身结构。即广义表的定义是递归的,因为在表的描述中又用到了表,允许表中有表,这种递归的定义能够很简洁地描述庞大而复杂的结构。一个广义表LS定义为n(n≥0)个元素a0,a1,a

2016-09-27 22:28:27 6438 2

原创 字符串(String)

字符串(String)1. 字符串的概念1.1 字符串的定义字符串,是一串文字和符号的序列,是由零个或多个字符的顺序排列所组成的数据结构,其基本组成元素是单个字符(char),字符串的长度可变。字符串简称为串(String),是n(n≥0)个字符的一个有限序列。通常可记为S=”a0a1a2……an−1”,其中,S是串名,可以是串变量名,也可以是串常量名。用引号‘…’或“…”作为分界符括起来的叫做串值,

2016-09-05 00:50:53 3894

原创 稀疏矩阵(Sparse Matrix)

稀疏矩阵(Sparse Matrix)注:压缩存储的矩阵可以分为特殊矩阵和稀疏矩阵。对于那些具有相同元素或零元素在矩阵中分布具有一定规律的矩阵,被称之为特殊矩阵。对于那些零元素数据远远多于非零元素数目,并且非零元素的分布没有规律的矩阵称之为稀疏矩阵。1. 稀疏矩阵的概念在矩阵中,若数值为0的元素数目远远多于非0元素的数目时,则称该矩阵为稀疏矩阵。与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。

2016-06-29 21:12:08 25836 2

原创 特殊矩阵——三对角矩阵(Tridiagonal Matrix)

特殊矩阵——三对角矩阵(Tridiagonal Matrix)1. 三对角矩阵的概念三对角矩阵就是对角线、邻近对角线的上下次对角线上有元素,其他位置均为0的矩阵。三对角矩阵是一种特殊的上Hessenberg矩阵(这个就是上三角矩阵加上下三角部分的第一条次对角线有元素,其他都为0元素)。2. 三对角矩阵的特性设一个n*n的方阵A,对于矩阵A中的任一元素aij,当|i-j|>1时,有aij=0(0≤i≤n

2016-06-27 13:06:31 69124 4

原创 特殊矩阵——对称矩阵(Symmetric Matrix)

特殊矩阵——对称矩阵(Symmetric Matrix)注:压缩存储的矩阵可以分为特殊矩阵和稀疏矩阵。对于那些具有相同元素或零元素在矩阵中分布具有一定规律的矩阵,被称之为特殊矩阵。对于那些零元素数据远远多于非零元素数目,并且非零元素的分布没有规律的矩阵称之为稀疏矩阵。1. 对称矩阵的概念元素以主对角线为对称轴对应相等的矩阵。2. 对称矩阵的特性对角矩阵都是对称矩阵,对称矩阵必须是方形矩阵。设一个n

2016-06-26 14:58:59 26599 1

原创 多维数组(Multi-dimensional Array)

多维数组(Multi-dimensional Array)1. 多维数组的概念多维数组是指二维及以上的数组。数组是下标(index)和值(value)组成的序对的集合。在数组中,每个有定义的下标都与一个值对应,这个值称作数组元素。 (1)二维数组:”数组元素为一维数组”的一维数组。 (2)三维数组:”数组元素为二维数组”的一维数组。 (3)四维数组:”数组元素为三维数组”的一维数组,如此类推。静态

2016-06-24 20:52:21 6291

原创 双端队列(Double-ended Queue)

双端队列(Double-ended Queue)注:队列是一种只允许在一端删除而在另一端插入的数据结构。双端队列(Deque)是队列的一种拓展,它可以在队列的两端进行插入和删除。1. 双端队列(Deque)的概念1.1 双端队列的定义双端队列是限定插入和删除操作在表的两端进行的线性表,是一种具有队列和栈的性质的数据结构。1.2 双端队列的特点双端队列中的元素可以从两端入队和出队,其限定插入和删除

2016-06-12 22:43:40 18425 1

原创 优先级队列(Priority Queue)

优先级队列(Priority Queue)注:队列是一种特征为FIFO的数据结构,每次从队列中取出的是最早加入队列中的元素。但是,许多应用需要另一种队列,每次从队列中取出的应是具有最高优先权的元素,这种队列就是优先级队列(Priority Queue),也称为优先权队列。1. 优先级队列的概念1.1 优先级队列的定义优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。

2016-06-05 17:14:45 29586 4

原创 迷宫最短路径问题(ShortestPath)的求解——利用链式队列

迷宫最短路径问题(ShortestPath)的求解——利用链式队列注:借助于栈求解迷宫问题时,并不能保证找到一条从迷宫入口到迷宫出口的最短路径。而借助于队列,可以找到从迷宫入口到迷宫出口的最短路径(如果有的话)。在迷宫中寻找最短路径问题在其他领域也存在,例如,在解决电路布线问题时,一种很常用的方法是在布线区域叠上一个网格,该网格把布线区域划分成n*m个方格,就像迷宫一样。从一个方格a的中心点连接到另一个方格b的中

2016-06-05 12:09:15 12388 3

原创 打印杨辉三角形(Pascal's triangle)——利用链式队列

打印杨辉三角形(Pascal’s triangle)——利用链式队列1. 杨辉三角的概念杨辉三角,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。将二项式(a+b)i展开,其系数构成杨辉三角形(国外称Pascal’s triangle),按行将展开式系数的前n行打印出来。从三角形的形状可知,除第1行以外,在打印第i行时,用到上一行(第i-1行)的数据,在打印第i+1行时,又用到第i行的数

2016-05-31 00:29:20 13184 8

原创 链式队列(Linked Queue)

链式队列(Linked Queue)1. 链式队列的概念1.1 链式队列的定义链式队列是基于链表的存储表示实现的队列。1.2 链式队列中各元素的逻辑及存储关系链式队列可以采用单链表作为其存储表示,因此,可以在链式队列的声明中用单链表定义它的存储空间。链式队列的队头指针指向单链表的第一个结点,队尾指针指向单链表的最后一个结点。注:链式队列的队头元素存放在单链表的第一个结点内,若要从队列中退出一个元

2016-05-28 19:03:37 13232

原创 循环队列(Circular Queue)

循环队列(Circular Queue)1. 循环队列的概念1.1 循环队列的定义为了能够充分地使用数组中的存储空间,克服”假溢出”现象,可以把数组的前端和后端连接起来,形成一个环形的表,即把存储队列元素的表从逻辑上看成一个环,成为循环队列(circular queue)。1.2 循环队列中各元素的逻辑及存储关系循环队列的首尾相接,当队头指针front和队尾指针rear进到maxSize-1后,再前

2016-05-28 18:09:41 11027

原创 顺序队列(Sequential Queue)

顺序队列(Sequential Queue)1. 顺序队列的概念1.1 顺序队列的定义顺序队列是基于数组的存储表示实现的队列。1.2 顺序队列中各元素的逻辑及存储关系顺序队列可以采用顺序表作为其存储表示,因此,可以在顺序队列的声明中用顺序表定义它的存储空间。顺序队列可以使用一维数组作为队列的存储空间,存放队列元素的数组的头指针为*elements,该数组的最大允许存放元素个数为maxSize,当前

2016-05-26 19:05:47 7210

原创 队列(Queue)

队列(Queue)1. 队列的概念1.1 队列的定义队列是一种特殊的线性表,是一种运算受限的线性表。队列是先进先出(FIFO,First In First Out)的线性表。1.2 队列的逻辑结构和存储表示队列的逻辑结构和线性表相同。队列的抽象数据类型有两种典型的存储表示:基于数组的存储表示和基于链表的存储表示。 (1)基于数组的存储表示实现的队列称为顺序队列,顺序队列可以采用顺序表作为其存储

2016-05-26 00:13:14 1837

原创 迷宫问题(MazePath)的求解——利用回溯法(backtracking)

迷宫问题(MazePath)的求解——利用回溯法(backtracking)1. 迷宫问题的提法迷宫问题是典型的图的搜索问题。假设一个迷宫,只有一个入口和一个出口。如果从迷宫的入口到达出口,途中不出现行进方向错误,则得到一条最佳路线。为此,用一个二维数组maze[m][n]来表示迷宫。 (1)当数组元素maze[i][j]=1 (0≤i≤m-1,1≤j≤n-1),表示该位置是墙壁,不能通行。 (2)当

2016-05-25 23:07:51 26145 8

原创 汉诺塔(Tower of Hanoi)问题的求解——利用栈与递归

汉诺塔(Tower of Hanoi)问题的求解——利用栈与递归1. 汉诺塔问题的提法汉诺塔问题是使用递归解决问题的经典范例。传说婆罗门庙里有一个塔台,台上有3根标号为A、B、C的用钻石做成的柱子,在A柱上放着64个金盘,每一个都比下面的略小一点。把A柱上的金盘全部移到C柱上的那一天就是世界末日。移动的条件是:一次只能移动一个金盘,移动过程中大金盘不能放在小金盘上面。庙里的僧人一直在移个不停,移动的最少总

2016-05-22 23:32:19 12339 4

原创 链式栈(Linked Stack)

链式栈(Linked Stack)1. 链式栈的概念1.1 链式栈的定义链式栈是基于链表的存储表示实现的栈。1.2 链式栈中各元素的逻辑及存储关系链式栈可以采用单链表作为其存储表示,因此,可以在链式栈的声明中用单链表定义它的存储空间。链式栈的栈顶在链表的表头,因此,新结点的插入和栈顶结点的删除都在链表的表头,即栈顶进行。1.3 链式栈的特点采用链式栈来表示一个栈,便于结点的插入与删除。在程

2016-05-14 17:49:56 6465 1

原创 双栈(Dual Stack)

双栈(Dual Stack)1. 双栈的概念1.1 双栈的定义双栈是指两个顺序栈,是一种特殊的顺序栈。1.2 双栈中各元素的逻辑及存储关系双栈共享一个地址连续的存储单元。即程序同时需要两个栈时,可以定义一个足够大的栈空间,该空间的两端分别设为两个栈的栈底,用bottom[0]=-1和bottom[1]=maxSize指示。压入数据时,让两个栈的栈顶top[0]和top[1]都向中间伸展,如果指示栈

2016-05-14 01:32:34 19961 2

原创 顺序栈(Sequential Stack)

顺序栈(Sequential Stack)1. 顺序栈的概念1.1 顺序栈的定义顺序栈是基于一维数组的存储表示实现的栈。1.2 顺序栈中各元素的逻辑及存储关系顺序栈可以采用顺序表作为其存储表示,因此,可以在顺序栈的声明中用顺序表定义它的存储空间。顺序栈可以使用一维数组作为栈的存储空间,存放栈元素的数组的头指针为*elements,该数组的最大允许存放元素个数为maxSize,当前栈顶位置由数组下标

2016-05-13 20:20:57 1876

原创 栈(Stack)

栈(Stack)1. 栈的概念1.1 栈的定义栈是一种特殊的线性表,是一种运算受限的线性表。栈是后进先出(LIFO,Last In First Out)的线性表。1.2 栈的逻辑结构和存储表示栈的逻辑结构和线性表相同。栈的抽象数据类型有两种典型的存储表示:基于数组的存储表示和基于链表的存储表示。 (1)基于数组的存储表示实现的栈称为顺序栈,顺序栈可以采用顺序表作为其存储表示,因此,可以在顺序栈

2016-05-12 22:38:59 769

原创 多项式(Polynomial)的运算——利用单链表

多项式(Polynomial)的运算——利用单链表1. 多项式的概念1.1 多项式的定义有限的单项式之和称为多项式,其中每个单项式叫做多项式的项,不含字母的项叫做常数项。多项式里,次数最高的项的次数叫做这个多项式的次数。多项式按某个字母降或升幂排序。单项式与多项式统称为整式。1.2 多项式的表示通常在数学中对一元n次多项式可表示成如下的形式,设多项式的最高可能阶数为maxDegree,当前的最

2016-05-11 16:39:11 8548 1

原创 约瑟夫(Josephus)问题的求解——利用循环链表

约瑟夫(Josephus)问题的求解——利用循环链表1. 约瑟夫问题的提法约瑟夫问题(约瑟夫环)是一个数学的应用问题。已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围,从编号为k的人开始报数,数到m的那个人出列,他的下一个人又从1开始报数,数到m的那个人又出列,依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从1~n,最后结果编号即为原问题的解。2. 求解约瑟夫问题的

2016-05-07 01:07:21 8395

原创 双向链表(Doubly Linked List)

双向链表(Doubly Linked List)1. 双向链表的概念1.1 双向链表的定义双向链表又称为双链表,是链表的一种。1.2 双向链表的结点结构双向链表的结点包括三个部分:前驱指针域、数据域和后继指针域。 (1)前驱指针域(lLink),又称为左链指针,用于存放一个指针,该指针指向上一个结点的开始存储地址。 (2)数据域(data),用于存储该结点的数据元素,数据元素类型由应用问题决定。

2016-05-03 23:42:56 15712 1

原创 循环链表(Circular Linked List)

循环链表(Circular Linked List)1. 循环链表的概念1.1 循环链表的定义循环链表是另一种形式的表示线性表的链表。1.2 循环链表的结点结构循环链表的结点包括两个部分:数据域和指针域。 (1)数据域(data),用于存储该结点的数据元素,数据元素类型由应用问题决定。 (2)指针域(link),用于存放一个指针,该指针指向下一个结点的开始存储地址。循环链表的结点结构示意图:

2016-05-03 00:42:13 7414

原创 单链表(Singly Linked List)

单链表(Singly Linked List)1. 单链表的概念1.1 单链表的定义单链表是线性表的链式存储表示。1.2 单链表的结点结构单链表的结点包括两个部分:数据域和指针域。 (1)数据域(data),用于存储该结点的数据元素,数据元素类型由应用问题决定。 (2)指针域(link),用于存放一个指针,该指针指向下一个结点的开始存储地址。单链表的结点结构示意图: 1.3 单链表中各结点

2016-03-24 20:21:26 3894

原创 顺序表(Sequential List)

顺序表(Sequential List)1. 顺序表的概念1.1 顺序表的定义顺序表是线性表基于数组的顺序存储表示。1.2 顺序表中各元素的逻辑及存储关系顺序表是按照顺序存储方式存储的线性表, 把线性表中的所有表项按照其逻辑顺序依次存储到从计算机存储中指定存储位置开始的一块连续的存储空间中。顺序表各个表项的逻辑顺序与其存放的物理顺序一致,即第i个表项存储于第i个物理位置(1<=i<=n)。由于顺

2016-03-05 16:58:25 3496

原创 线性表(Linear List)

线性表(Linear List)1. 线性表的概念线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了哨位结点)。在数据结构逻辑层次上细分,线性表可分为一般线

2016-03-05 14:27:08 5534

原创 常用的数据结构

常用的数据结构1. 数组(Array)数组可以说是最基本的数据结构,在各种编程语言中都有对应。数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。一个数组可以分解为多个数组元素,按照数据元素的类型,数组可以分为整型数组、字符型数组、浮点型数组、指针数组和结构数组等。数组还可以有一维、二维以及多维等表现形式。2. 栈(Stack)栈是一种特殊的线性表,它只能在一个表的一个固定端

2016-03-04 19:19:53 846

原创 数据与数据结构

数据与数据结构1. 数据1.1 数据(data)数据:是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。1.2 数据大致分的两类:(1)数值性数据;(2)非数值数据数值性数据:主要包括整数、浮点数、复数、双精度数等,主要用于工程和科学计算,以及商业事务处理。非数值数据:主要包括字符和字符串,以及文字、图形、图像、语音等数据。1.3 数据元素(d

2016-03-03 00:27:22 1228

原创 linux下编译代码遇到“/usr/bin/ld: cannot find -lcrypto”的问题

linux下编译代码遇到“/usr/bin/ld: cannot find -lcrypto”的问题1. 问题:/usr/bin/ld: cannot find -lcrypto问题描述:在Linux下build code时,若要进行-lssl或-lcrypto的链接时,可能会出现以下错误: (1)/usr/bin/ld: cannot find -lcrypto (2)/usr/bin/ld: cann

2016-03-01 18:50:34 11141

原创 Linux CentOS系统安装中文输入法

Linux CentOS系统安装中文输入法注:linux系统默认的输入法是英文键盘,而做普通桌面系统使用的时候,经常需要用到中文输入法,没有很不方便。1. 打开终端界面,使用su - root切换到超级用户,然后输入yum install “@Chinese support”,回车。这里写图片描述2. 中间安装过程提示你输入的时候都输入y,一直到安装完成。这里写图片描述3. 然后点击桌面左上角的s

2016-03-01 17:06:44 7817 2

tinyxml_2_6_2

用于读写xml文件的C++封装类。适用于windows和Linux。

2016-02-16

HID设备操作的头文件及库文件

提供了对HID设备操作的相关头文件及库文件,直接把头文件放到工程目录下并引入到工程,且将库文件加入到工程(在VC6.0下“工程->设置->连接->对象/库模块”)

2013-09-23

USB设备的获取与判断(通过VIDPID)

本资源主要提供了通过VIDPID判断系统上是否存在该USB设备,并实现了简单的读写操作!

2013-09-23

OPENGL天空盒

OPENGL中的摄像漫游技术,可以通过摄像机对三围场景进行摄像漫游。

2011-10-30

图形类的案例 Shape.cpp

解决图形面积计算问题,更好地帮助大家学会类的使用,更好地了解类的继承等,以及虚函数的使用等等!

2010-10-22

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

TA关注的人

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