小葱的博客

每一个不曾起舞的日子都是对生命的辜负。。。

排序:
默认
按更新时间
按访问量

线索化二叉树

中序线索化(递归):图形解析:代码如下://中序线索化 void InorderThreading() { Node* prev = NULL; _InoderThreading(_root, prev); }void _InoderThread...

2017-05-27 00:25:53

阅读数:218

评论数:0

文本文件和二进制文件详解(转)

转自:http://www.cnblogs.com/pengwangguoyh/articles/3223072.html前言:1)文本文件:这类文件以文本的ASCII码形式存储在计算机中。它是以”行”为基本结构的一种信息组织和存储方式。 2)二进制文件:这类文件以文本的二进制形式存储在计算机...

2017-05-26 22:19:38

阅读数:464

评论数:0

二叉搜索树

特点:二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree) 一般具有下面的特点: 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若任意节点的右子树不空,则右子树上所...

2017-05-26 08:12:11

阅读数:116

评论数:0

进程间通信----->共享内存

本文内容说明: *共享内存的概念 *通过共享内存来达到进程间通信。共享内存:在Linux中,每个进程都有自己的P C B 和地址空间,并且都有一个对应的页表,负责将进程的地址和物理地址进行映射,通过MMU来管理。创建一段共享存储区(临界资源),被映射到不同进程的地址空间内,从而实现了高效率的资...

2017-05-20 00:25:15

阅读数:311

评论数:0

进程间通信---->信号量

进程间通信(IPC)Linux中的内存空间分为系统空间和用户空间。 在系统空间中,由于各个线程的地址空间都是共享的,即一个线程能够随意访问kernel中的任意地址,所以无需进程通信机制的保护。 而在用户空间中,每个进程都有自己的地址空间,一个进程为了与其他进程通信,必须进入到有足够...

2017-05-19 00:35:53

阅读数:385

评论数:1

进程间通信之管道

管道: 管道是进程间通信的主要手段之一。 一个管道实际上就是个只存在于内存中的文件, 对这个管道的操作需要两个已经打开的文件(两个文件描述符),代表管道的两端。 管道根据其适用范围可分为: 匿名管道和命名管道。管道容量:管道容量分为pipe buf和pipe capacity两种...

2017-05-18 00:55:27

阅读数:209

评论数:0

堆及topk问题

堆的本质 vector+向下调整算法/向上调整算法。 注意:这个二叉树为完全二叉树 向下调整算法: 已知条件:从一个节点开始向下调整,已知这个节点的左右子树已经是大堆或小堆。 所以需要从第一个不是叶子节点的节点开始调整,而这个节点正好是最后一个节点的父节点。 i = (_...

2017-05-17 17:55:16

阅读数:214

评论数:0

探索文件描述符(fd)与FILE结构体之间的关系

文件描述符(fd)对于linux而言,所有对设备(对于linux而言,一切皆文件)和文件的操作都使用文件描述符来进行的。 文件描述符是一个非负的整数,它是一个索引值,指向内核中每个进程打开文件的记录表。 当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符用于后续对文件的读写操作;...

2017-05-09 14:09:28

阅读数:1018

评论数:0

迷宫及走迷宫时的最优解

1.递归走迷宫: (利用回溯法)#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; #include<cassert>struct Pos//设置坐标 { Pos(in...

2017-05-07 01:03:01

阅读数:1103

评论数:0

对称矩阵及稀疏矩阵浅谈

1.对称矩阵特点: 关于对角线对称,Aij == Aji。 下面实现: ①对称矩阵的压缩存储 ②对称矩阵的访问 ③对称矩阵的还原实现代码如下:#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespac...

2017-05-07 00:28:52

阅读数:584

评论数:0

二叉树的基本操作

1。二叉树的特点:二叉树的特点: 1.每个节点最多有两棵子树,即二叉树中不存在度大于2的节点(分支数最大不超过2) 2.二叉树的子树有左右之分,也就是说二叉树是有序的。 2。二叉树的基本操作(递归):以下面的二叉树为例:1.求二叉树的节点个数: 思路: (1)root 为空(整个二叉...

2017-05-07 00:08:02

阅读数:716

评论数:0

模拟实现list(iterator)

说明:list的erase存在迭代器失效问题,本文给出两种解决方法,其中的一种是stl中给出的解决方法。 //List.h#pragma once #define _CRT_SECURuE_NO_WARNINGS 1 #include<iostream> using namespac...

2017-04-28 19:18:00

阅读数:246

评论数:0

模拟实现vector

vector.h#pragma once #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std;//vector的插入和删除都存在迭代器失效的问题,解决方法将插入和删除的函数 //的参数给成引用...

2017-04-28 19:12:38

阅读数:286

评论数:2

了解c++中的类型转换

1、static_cast(隐式类型转换)—–>相关类型的转换 static_cast用于非多态类型的转换(静态转换),任何标准转换都可以用它,但 它不能用于两个不相关的类型进行转换。 2、reinterpret_cast(强制类型转换) reinterpret_cast操作符用于将一...

2017-04-21 15:52:07

阅读数:177

评论数:0

递归算法总结

下面总结一些常见的递归编程题: 1.使用递归逆序打印单链表: #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream>using namespace std;struct Node { Node(int data) :_...

2017-04-21 14:29:18

阅读数:188

评论数:0

表达式求值(中缀转后缀及后缀表达式求值)

。中缀表达式转后缀表达式:中缀表达式转后缀表达式遵循以下原则: 1.遇到操作数,直接输出; 2.栈为空时,遇到运算符,入栈; 3.遇到左括号,将其入栈; 4.遇到右括号,执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左...

2017-04-21 13:05:59

阅读数:10117

评论数:1

栈的基本操作及如何判断一个表达式中的左右括号是否匹配

我们都知道,栈(stack)具有后进先出的特点,所以在我们思考一个表达式中的左右括号是否匹配问题时,就自然会想到是不是可以利用栈的特点来判断左右括号是否匹配呢? 主要思路如下: 1.扫描整个表达式; 2.判断当前字符是否为括号(左右括号) ①如果不是,则继续扫描下一个字符; ②如果是...

2017-04-21 12:25:10

阅读数:6054

评论数:0

设计模式----单例模式

剑指offer面试题2: 设计一个类,我们只能生成该类的一个实例。一、只适用于单线程环境:1。利用静态成员函数—->设计思路: 1)因为只能产生一个示例—–>需将该类的构造函数的访问权限设置为私有的(不允许类外在任意地方可以实例化出该类对象)2)因为静态成员变量是该类所有对象所共享...

2017-04-13 12:39:05

阅读数:247

评论数:0

时间复杂度和空间复杂度

一开始接触数据结构,不可避免的要了解如何计算一个算法的时间复杂度和空间复杂度,也许你之前听过,但是并没有深入了解的话,那么就可以和我一起来了解下哦。。。本篇文章讲的主要内容: 1.时间复杂度 2.空间复杂度 3.两个小例子来深入理解(使用递归或非递归时的)时间复杂度和空间复杂度。 如何衡...

2017-04-11 14:49:36

阅读数:1580

评论数:0

初探进程及task_struct

文章概要: 1.进程概念的简单普及 2.进程控制块(PCB)中成员信息 一、进程描述和控制: 1.操作系统必须支持交替执行多个进程,在合理的响应时间范围内使处理器的利用率达到最大。 2.操作系统必须按照特定的策略(例如某些函数或者应用程序具有较高的优先级)给进程分配资源,同时避免死锁。 ...

2017-04-10 00:06:08

阅读数:202

评论数:0

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