哈夫曼(Huffman)树及其应用
摘要:Huffman树又称最优树,是一类带权路径长度最短的树,带权路径长度为从该节点到树根之间的路径长度与节点上权值的成积。 那么如何构建一个Huffman树呢?就需要Huffman算法 1、利用给定的n个权值构成有n个二叉树的集合F,每个二叉树就只有一个带权值的根节点,其左右子树都为空。 2、选取两课根
阅读全文
posted @
2016-06-28 22:49
My_Blog_Days
阅读(1751)
推荐(0)
堆和堆排序
摘要:堆的定义如下:n个元素的序列(K1,K2......Kn)当且仅当满足Ki<=K2i&&Ki<=K2i或Ki>=K2i&&Ki>=K2i(i=1,2,3,...n/2)时称之为堆 以一维数组作为堆的存储结构,堆可以看成一个完全二叉树。 最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩
阅读全文
posted @
2016-06-27 22:45
My_Blog_Days
阅读(276)
推荐(0)
二叉树的线索化
摘要:遍历二叉树是以一定规则将二叉树中结点排列成一个线性序列即是对一个非线性结构进行线性化操作,使除第一个和最后一个节点外,每一个节点有且只有一个直接前驱,直接后继 二叉树作为存储结构只能找到节点的左孩子右孩子信息,而不能直接得到结点在任一序列中的前驱和后继,这种信息只有在遍历的动态过程中可以看到。 二叉
阅读全文
posted @
2016-06-25 23:51
My_Blog_Days
阅读(3428)
推荐(1)
struct files_struct
摘要:内核利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。 文件描述符的操作(如: open)返回的是一个文件描述符,内核会在每个
阅读全文
posted @
2016-06-22 22:48
My_Blog_Days
阅读(1732)
推荐(0)
二叉树存储及遍历
摘要:1、树的存储: 二叉树的存储:1、数组存储(此方法适合完全二叉树的存储) 2、链表存储(可分为二叉链表,三叉链表)结构如下: 2、 使用二叉链表实现二叉树 测试用例: int a[10] = { 1, 2, '#', '#', 3, 4, '#', '#', 5, 6 };//其中用'表示空' 按前
阅读全文
posted @
2016-06-19 17:26
My_Blog_Days
阅读(2409)
推荐(0)
Linux中相关知识(atexit(),fork(),粘滞位)
摘要:1、atexit()函数 函数名: atexit 头文件:#include<stdlib.h> 功 能: 注册终止函数(即main执行结束后调用的函数) 用 法: int atexit(void (*func)(void)); 注意:一个进程可以登记32个函数,这些函数由exit自动调用,这些函数被
阅读全文
posted @
2016-06-19 12:26
My_Blog_Days
阅读(511)
推荐(0)
进程调度算法
摘要:在系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。 进程调度任务 (1)首先保存当前进程的处理机的现场信息 (2)按照算法选取进程 (3)把处理器分配给
阅读全文
posted @
2016-06-17 17:28
My_Blog_Days
阅读(10281)
推荐(1)
C/C++中动态内存分配
摘要:代码段:用来存放程序执行代码的一块内存区域。这部分内存大小在程序运行前已经知道,通常属于只读,其中包括只读的字符串常量,不可改变 BBS段:用来存放存放程序中未初始化的全局变量及静态变量,属于静态内存分配。 数据段:用来存放已初始化的全局变量及静态变量,属于静态内存分配。 堆:用来存放在程序运行中被
阅读全文
posted @
2016-06-17 13:57
My_Blog_Days
阅读(185)
推荐(0)
数据结构一栈和队列(2)
摘要:1、两个栈实现一个队列,实现在队列尾部插入节点,在队列头部删除节点。 若为入队列则进stack1,若要出队列可分2种情况:a、若stack2为空,根据栈先进后出的特性应该先将stack1的元素pop出,进stack2。b、若 stack2不为空,可以说明stack2是前几次操作由stack1出栈的元
阅读全文
posted @
2016-06-11 13:49
My_Blog_Days
阅读(341)
推荐(0)
结构体的基础知识及存储分配
摘要:一、结构体的访问 1.结构体成员的的直接访问,如下结构体: struct A{ int a; long *b; char c[20]; }; struct A com; 结构体成员通过操作符"."访问,表达式com.a的结果是个数组名,可以把它使用在任何可以使用数组名的地方,com.a[4],将选择
阅读全文
posted @
2016-06-10 19:36
My_Blog_Days
阅读(1889)
推荐(0)
数据结构一栈和队列(1)
摘要:一、栈的定义--Stack栈只允许在末端进行插入和删除的线性表。栈具有后进先出的特性(LIFO,Last In First Out) 栈的应用举例: 1、数制转换例(十进制 》八进制) 2、括号匹配的检验 设置一个栈,若是左括号压入栈顶,使原来在栈中的未匹配的括号的优先级自然降了一级,若是右括号有两
阅读全文
posted @
2016-06-09 17:28
My_Blog_Days
阅读(196)
推荐(0)
数据结构一链表
摘要:无头节点的单链表 链表是一种线性表,但是并不是顺序存储,而是每个节点里面存储着下一个节点的指针,把存储数据元素的数据串链起来。 链表和顺序表的优缺点 1>.顺序表支持随机访问,单链表不支持随机访问 2>.顺序表插入/删除数据效率很低时间复杂度为0(N);除尾插尾删效率高,时间复杂度为0(1) 3>.
阅读全文
posted @
2016-06-07 14:53
My_Blog_Days
阅读(256)
推荐(0)
c/c++中的关键字(static、const、inline、friend)
摘要:static:1、a、c语言中static修饰的局部变量在编译时赋初始值,只赋初始值一次,在函数运行时已有初值,每次调用函数时不用重新赋值,指示保留上次 函 数调用 结束时的值。(n!函 数的实现) 如果定义局部变量不赋初值的话编译时自动赋值0或‘0’ 在程序整个运行期间不释放,虽然在函数调用后仍存
阅读全文
posted @
2016-06-05 18:37
My_Blog_Days
阅读(575)
推荐(1)
进程控制块(PCB)结构
摘要:一、进程控制块(PCB)结构 进程控制块(PCB)是系统为了管理进程设置的一个专门的数据结构。系统用它来记录进程的外部特征,描述进程的运动变化过程。同时,系统可以利用PCB来控制和管理进程,所以说,PCB(进程控制块)是系统感知进程存在的唯一标志。 Linux系统的PCB包括很多参数,每个PCB约占
阅读全文
posted @
2016-06-05 16:09
My_Blog_Days
阅读(13100)
推荐(1)