- 博客(14)
- 收藏
- 关注
原创 二叉树的遍历
二叉树的遍历遍历概念所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。遍历方案遍历方案 从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作: (1)访问结点本身
2015-05-03 09:44:39
619
原创 二叉树的中序遍历线索化
二叉树的线索化@(Linux C/C++)[线索二叉树,中序遍历,]理论基础在二叉树的二叉链表表示实现的时候,当以二叉树作为存储结构时,只能找到节点的左右孩子信息,不能直接得到结点在任一序列中的前驱和后继信息,只有在遍历过程中才能得到这种信息。我们知道,在n个结点的二叉链表栈必定存在n+1个空链域,因此,可以利用这些空链域来存放这些结点信息。所以作如下规定:若结点右左子树,则其lchild域指向其左
2015-05-03 09:02:26
4714
原创 二叉树的前驱和后继
前提二叉树的几何结构和遍历路径,是查找前驱和后继的基础。结点分类几何结构千变万化,但单个结点必然和至多3点邻接:左(或右)父,左子和右子。按照“X”型助记,交叉点为研究对象。为求结点N的前驱结点Pre和后继结点Suc,设N的左子lchild,右子rchildm,N的左父亲lparent,右父亲rparent; 先后顺序同一几何结构,不同的遍历方式得到不同的遍历路径;具体到单个结点,也就有不同的前驱
2015-05-03 08:56:29
28662
原创 文本纠错项目一些问题
线程启动问题thread thread_run头文件namespace THREAD{ class CThread_RUN { public: virtual void run()=0; virtual void set_cache(hash_record* m_cache)=0; virt
2015-04-30 16:09:17
1787
原创 Linux 多线程聊天服务器
多线程实现QQ群聊天功能(1)Socket 实现建立网络连接和通讯功能#include <iostream>#include <netinet/in.h>#include <sys/socket.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <sys/epoll.h>#include <time.h
2015-04-28 11:20:40
1370
原创 Linux 多线程目录遍历
目录遍历函数#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>char *getcwd(char *buf, size_t size);//获取当前目录的绝对路径DIR *opendir(const char *name); //获取一个路径的目录流DIRDIR *fdopendir(int fd);
2015-04-27 13:50:57
2037
原创 智能指针和引用计数以及String的C++实现
内存空间的开辟#include<iostream>#include<cstdio>#include<cstdlib>int main(int argc,char** argv){ int m=5,n=6; int **a= new int* [m]();//C++手法开辟 for(int index=0;index!=m;index++) {
2015-04-26 08:55:55
1327
原创 select I/O 多路复用实现服务器聊天室功能
基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。 (4)如果一个服务器即
2015-04-25 13:48:10
2610
原创 内存映射和文件操作函数
内存映射 mmap的函数定义: void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);函数参数详细解 参数fd为即将映射到进程空间的文件描述字,一般由open()返回,同时,fd可以指定为-1,此时须指定flags参数中的MAP_ANON,表明进行的是匿名映射(不涉及具体的文件名,避免了文件
2015-04-25 13:35:31
749
原创 POSIX信号量解决经典同步问题
posix信号量信号量简介POSIX信号量是属于POSIX标准系统接口定义的实时扩展部分。在SUS(Single UNIX Specification)单一规范中,定义的XSI IPC中也同样定义了人们通常称为System V信号量的系统接口。信号量作为进程间同步的工具是很常用的一种同步IPC类型。信号量是一种用于不同进程间进行同步的工具,当然对于进程安全的对于线程也肯定是安全的,所以信号量也理
2015-04-25 13:30:54
856
原创 epoll I/O 多路复用
select I/O 复用的缺陷(1)每次调用select函数后要针对所有的文件描述符循环遍历, 代码如下:result=select(fd_max+1,&temp_set,NULL,NULL,&timeout);for(int index=0;index!=fd_max+1;index++){ if(FD_ISSET(index,&temp_set)) { i
2015-04-24 17:41:09
514
原创 信号处理
信号集合SIGINT 2 Term Interrupt from keyboardSIGQUIT 3 Core Quit from keyboardSIGILL 4 Core Illegal InstructionSIGABRT 6 Core Abort signal from abort(3)SIGFPE 8 Core Floati
2015-04-24 16:59:46
517
原创 僵尸进程的处理
在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程. 在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用 waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程。两种方法杀死僵尸进程,一般僵尸进程很难直接kill掉,不过您
2015-04-24 13:18:11
661
原创 Linux System V 信号量
linux 线程处理问题int semget(key_t key,int nsems,int flag);int semop(int semid,struct sembuf *sops,size_t nops);int semctl(int semid, int semnum, int cmd, …);struct sembuf{ short sem_num; //操作信号在信号集
2015-04-24 11:27:15
550
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人