自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

原创 数据结构学习笔记:堆排序

堆的定义:       堆是一棵完全二叉树。每个结点的值都大于等于该结点的孩子结点的堆称为大顶堆,反之则称为小顶堆。      为了使用简便,我们就用数组Heap来存储堆结构,Heap[1]存储堆的根结点,如果当前遍历的结点为Heap[i],则Heap[2i]和Heap[2i+1]分别为其左右孩子结点。堆排序       在了解了堆结构定义之后,我们就可以利用堆结构来进行排

2016-01-27 19:41:46 248

原创 数据结构学习笔记:平衡二叉树

何为平衡二叉树          平衡二叉树(AVL树)是对二叉排序树的一种改进。二叉排序树有一个缺陷,那就是针对一个集合中数据不同的顺序,二叉排序树创建出来的形态会有很大的差别,而深度与完全二叉树相同的形态的查找速度是最快的,而最差的形态就是形如链表的斜树。例如下图:       如果要查找7结点,则形如左图的二叉排序树的查找函数只用比较3次,而右图则需要查找7次。平衡二叉树就是为了

2016-01-23 20:23:50 363

原创 数据结构学习笔记:平衡二叉树

何为平衡二叉树          平衡二叉树(AVL树)是对二叉排序树的一种改进。二叉排序树有一个缺陷,那就是针对一个集合中数据不同的顺序,二叉排序树创建出来的形态会有很大的差别,而深度与完全二叉树相同的形态的查找速度是最快的,而最差的形态就是形如链表的斜树。例如下图:       如果要查找7结点,则形如左图的二叉排序树的查找函数只用比较3次,而右图则需要查找7次。平衡二叉树就是为了

2016-01-22 21:21:51 143

原创 数据结构学习笔记:二叉排序树

何为二叉排序树          二叉排序树(Binary Sort Tree),又称二叉搜索树。它是一棵具有以下性质的二叉树:若根结点的左子树非空,则其左子树上所有结点的值都小于它。若根结点的右子树非空,则其右子树上所有结点的值都大于它。根结点的左,右子树也分别都为二叉排序树。

2016-01-22 20:16:14 315

原创 数据结构学习笔记:利用哈夫曼编码实现文件的压缩与解压

原理:                         利用哈夫曼树对文件中的字符进行重新编码,也就是根据文件中出现的所有字符的频率来创建哈夫曼树,然后生成哈夫曼编码来对文件中的所有字符进行重新编码,使文件中出现频率高的字符的编码变短,从而实现文件的压缩存储。相应的,解压过程也就是对文件按照哈夫曼编码的译码过程。分析:            无论是什么文件,它最终都是以二进制形式存储到

2015-12-01 19:57:39 1805

原创 c++学习笔记:函数传参三种方式的不同

c++中的三种传参方式:值传递。形如: void func(int temp) ;地址传递。形如:void func(int *temp) ;引用传递。形如:void func(int &temp) ;三种传参方式的作用与优点:值传递:在传递时会自动将传入的实参复制一份,只将实参的副本传入函数,在函数中对参数的修改不会影响到原变量。(此种传递方式需要注意,在

2015-11-03 17:40:56 688

原创 数据结构学习笔记:马踏棋盘

课题描述:          从任意初始位置开始,将象棋中的马按照移动规则走完尺寸为8*8的棋盘。运算完成后输出正确路径。课题分析与设计方案:         针对题目,我们来一步一步地进行分析。首先,从题目我们可以很容易分析出“马踏棋盘”问题实际上是实现一个深度优先搜索的过程。马在每一次进行移动的时候,有八个后继点供选择(其中有的后继点越界或已经走过,需要加入判断函数来筛选合法后继点

2015-10-21 20:07:13 462

原创 数据结构与算法学习笔记:栈与队列

基本定义:                首先,栈与队列都属于线性表的范畴。所以,它们都具有线性表的基本属性:线性表中的每一个元素都是一对一的关系,除了表头结点与表尾结点 (如果有的话,线性表可以为空,即含有零个元素) 之外,表中每一个结点的都有且仅有一个前驱结点和一个后继结点。        而栈和队列这两种数据结构,是在线性表的基础上,对其操作方法进行了限制,从而产生了不同的用法和用途

2015-09-17 20:19:50 284

原创 Linux学习笔记:信号基础

信号简介:1>  信号的来源:2>  信号的种类:信号处理:1>  信号的捕捉与处理:2>  信号的发送:3>  信号的屏蔽:

2015-08-04 14:31:24 356 1

原创 Linux学习笔记:线程互斥锁

线程互斥锁作用:线程互斥锁通过锁机制来实现线程间的同步。在同一时刻,线程互斥锁只允许一个线程执行一个关键部分的代码。线程互斥锁用法:1) 操作互斥锁的函数:pthread_mutex_init () //初始化一个互斥锁 pthread_mutex_destory() //注销一个互斥锁pthread_mutex_lock() //给指定互斥锁加锁,如果不成功,则线程阻塞等

2015-08-03 11:11:17 310 1

原创 Linux学习笔记:线程私有数据

在学习线程操作的过程中,我一直对线程私有数据的作用很困惑,不知道它到底有什么作用,但经过一段时间的探索后,我总结了一部分关于线程私有数据的用法,如果有不对或者不够详细的地方,请指出。线程私有数据的实现:线程的私有数据采用了一种被称为 "一键多值" 的技术,即一个键对应多个数值。操作线程私有数据的函数主要有4个:1> pthread_key_create();

2015-07-30 17:04:20 342 2

原创 Linux学习笔记:文件权限 知识点小结

Linux文件的基本权限有9个,分别是owner,group,others三种身份各自的三种权限:r (read,读),w (write,写),x (execute,执行)。       其中,可以用数字来代表各个权限:                r : 4                  w : 2                x : 1

2015-07-27 11:06:12 357 1

原创 c语言学习笔记:命令行参数与命令行分析函数getopt()

初识c语言时,我一直将main函数写作 int main(void),但随着学习的深入,我了解到main函数身为一个函数,当然也可以接收输入的参数,它的参数就是进程开始时输入的命令。所以main函数的完整形式应该写作:int main(int argc,char *argv[]),其中argc是一个int型变量,储存命令参数的个数,argv是一个指针数组名(所以char *argv[]

2015-07-23 11:39:50 535 2

原创 Linux学习笔记:shell重定向功能中dup/dup2系统调用的作用

dup和dup2两个系统调用的作用都是拷贝文件描述符。        在man手册中查询dup和dup2的原型如下:        #include         int dup(int oldfd);        int dup2(int oldfd, int newfd);        dup用于复制oldfd参数所指的文件描述符,当复制成功时返回最小的尚未被使用

2015-07-21 19:48:42 711 1

原创 Linux下实现getch()函数功能

学习c语言之初,我在写一些小程序时常会用到getch()函数,用以达到暂停程序或按任意键继续的效果。但是getch()函数并非c标准函数,故在Linux系统中想要实现getch()函数的功能需要自己进行编写。   首先需要清楚的是c标准库中的getchar()函数和getch()函数的区别。   getchar()函数,是从键盘缓冲区中读取一个字符,遇到回车键时返回该字符的ASCII码,若

2015-07-19 09:19:59 1444 1

空空如也

空空如也

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

TA关注的人

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