自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (1)
  • 收藏
  • 关注

原创 I/O复用------poll

二、poll系统调用 在指定时间内轮询一定数量的文件描述符,以测试其中是否有就绪者。 <1> poll函数#inlcude <poll.h> int poll(struct pollfd* fds, nfds_t nfds, int timeout); // fds 是一个pollfd结构类型的数组,指定感兴趣的文件描述符上发生的可读、可写和异常 // struct pollfd{ // in

2016-08-31 22:27:47 283

原创 知识梳理------进程(一)

进程是处于执行状态的程序以及它所包含的资源(可执行的代码、一些用户数据、打开的文件、用于保存临时数据的堆栈、挂起的信号等)的总称。从内核角度看,进程是操作系统分配内存、CPU时间片等资源的基本单位,为正在运行的程序提供运行环境。 <1> 进程描述符(task_struct) 每个进程在内核中都有一个进程描述符来维护其相关信息。该结构定义在/include/linux/sched.h中,大致信息包

2016-08-31 18:56:35 355

原创 知识梳理------信号

信号是由用户、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。 <1> 信号的产生方式包括: * 对于前台进程,输入特殊的终端字符来发送信号 * 系统异常(浮点异常、非法内存段访问) * 系统状态变化(alarm定时器到时,产生SIGALRM信号) * 使用kill函数或者kill命令:#inlcude <sys/types.h> #include <signal

2016-08-30 21:32:05 274

原创 I/O复用------select

I/O复用使得程序能同时监听多个文件描述符。其适用场合为: 客户端:同时处理多个socket,同时处理用户输入和为网络链接。 服务端:同时处理监听、链接socket,同时监听多个端口,同时处理TCP和UDP请求。 注意:I/O复用本身是阻塞的,当多个描述符同时就绪时,如果不使用多进程/多线程,那么就会按顺序依次处理。 一、 select系统调用 在一段时间内,监听用户感兴趣的文件描述符上

2016-08-30 10:57:35 308

原创 二叉树------寻找二叉树中两个结点的最近公共祖先

题目描述: 给定一棵二叉树以及它的两个结点,求这两个结点在这棵二叉树中的最近公共祖先结点。 思路分析: 1. 倘若这棵二叉树是一棵二叉查找树,那么就从根结点开始,使用前序遍历每个结点,当到达某个结点n时,若有结点n的值大于其中一个结点而小于另一个结点,则结点n就是要找的结点; 2. 若二叉树中,每个结点都有一个指向其父结点的指针,那么此问题就可以转化为寻找两个链表的第一个公共结点。 3.

2016-08-27 16:43:35 956

原创 二叉树------序列化与反序列化二叉树

题目描述: 实现两个函数,分别用来序列化和反序列化一棵二叉树。 分析: 对于序列化:使用前序遍历,递归的将二叉树的值转化为字符,并且在每次二叉树的结点不为空时,在转化val所得的字符之后添加一个’ , ‘作为分割。对于空节点则以 ‘#’ 代替。 char* Serialize(TreeNode *root){ if(root == NULL) return NULL;

2016-08-09 12:18:47 429

原创 二叉树------之字形打印二叉树

题目描述: 实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 分析: 对于一个n层的二叉树,可以使用一个数组将二叉树按层序记录下来,特别的为了明确的分割每一层,要将二叉树的前n-1层填满。方法是,对于一个NULL节点,若在它之后还有不为NULL的结点那么就用NULL填充它的子节点位置,直到遍历完所有位

2016-08-08 18:30:38 803

原创 二叉树------对称二叉树

题目描述: 给定一棵树,判断它是不是对称二叉树。 分析: 面对此题,开始时想使用树的中序遍历,二叉树对称时,其中序遍历结果是一个回文串。但这只是一个必要非充分条件,例如对于二叉树{5, 5, 5, 5, #, #, 5, #, 5} 它的中序遍历结果是一个回文串,但它不是一棵对称二叉树。然后,考虑使用递归,对称二叉树与其镜像完全相同,则递归的判断当前结点与其镜像结点的值是否相同,从而来判断二叉

2016-08-08 17:23:59 392

原创 二叉树------二叉树的下一个结点

题目描述: 给定一棵二叉树和一个结点,要求找到中序遍历此树时该结点的下一个结点。 分析: 中序遍历一棵二叉树时,要根据一个结点有无右子树而分开讨论。 若当前结点有右子树,则它的下一个结点就是其右子树的最左叶子结点; 若当前结点没有右子树,那么又分两种情况: *若当前结点是其父节点的左孩子结点,那么其下一个结点就是其父结点; *若当前结点是其父节点的有孩子结点,那么沿着指向其父结点的指针向

2016-08-08 16:56:13 384

原创 链表------删除链表中所有重复的结点

题目描述: 给定一个排序链表,要求删除链表中所有的重复结点.(例如: 1->2->2->3->3->4 处理后 1->4) 分析: 使用三个指针front、cur、last,初始时,front = NULL;cur = pHead;last = pHead->next;每一次判断cur->val == last->val . 1. 若相等,则last继续向后移动,直到第一个不等的结点或

2016-08-08 16:33:43 570

原创 链表------带环链表的环入口结点

题目描述: 给定一个带环链表,要求找到其环入口结点. 分析: 首先要确定是否有环. 此部分可以使用快慢指针的思想设有指针p和q, 从链表第一个结点开始,p每次移动一步, 而q每次移动两步, 看最终是否会有(p != NULL && q != NULL && p == q) 从而就可判定链表是否有环; 若链表有环,则经过第一步之后p和q都指向环中的同一个结点,现在继续使得q沿着链表移动并进行计数

2016-08-08 15:56:12 303

原创 字符串------字符流中第一个不重复的字符

题目描述: 实现一个函数用来找出字符流中第一个只出现一次的字符。 分析: 使用ASCII字符集只有256个字符,可以定义一个长度为256的数组,使得数组下标对应的的记录字符出现的位置,初始时数组的每个元素都初始化为-1. 每遇到一个字符,先判断在数组中的对应位置上的值是否为-1,若是,则表示当前遇到的字符是第一次出现,就将对应位置改为1;若数组的对应位置不是-1,则表示当前遇到的字符已经出现过

2016-08-08 11:17:47 516

原创 字符串------表示数值的字符串

题目描述: 实现一个函数用来判断字符串是否表示数值(包括整数和小数以及使用科学计数法表示的数)。 分析: 表示数值的字符串的规则有: 第一个字符只能是’+’ 、’-‘以及数字; 数字字符后面只能接’.’或’e’/’E’; 小数点后面必须要有字符且只能接数字字符或’e’/’E’; ‘e’/’E’后面必须要接字符且只能接数字字符或者’+’ / ‘-‘; ‘+’ / ‘-’ 后面必须要接数字字符;

2016-08-08 10:50:50 382

原创 字符串------正则表达式匹配

题目描述: 请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次)。 分析: 难点主要是一个匹配成功的字符后面紧接着出现’*’应该如何处理. 可以分三种情况: 文本串不移动, 匹配串移动两个字符; 文本串移动一个字符, 匹配串不移动; 文本串移动一个字符, 匹配串移动两个字符; bool match(char

2016-08-08 10:25:58 264

原创 数组------构建乘积数组

题目描述: 给定数组A[n] = {0, 1, …, n-1},要求构建一个数组B[n],使得B[i] = A[0]A[1]…A[i-1]A[i+1]…A[n-1].并且不能使用除法. 分析: 若能使用除法,则B[i] = A[0]A[1]…A[n-1] / A[i].但由于不能使用除法,所以此方法不可行. 方法一: 可以使用蛮力方法,对每个B[i]都重新乘一遍,从而得到结果,复杂度是O(n

2016-08-08 09:29:11 310

原创 数组------数组中的重复数字

题目描述: 给定一个长度为n的数组,所有的数组都在0到n-1的范围内,请找出数组内的任意一个重复数字。 分析: 1. 将数组排序,然后从头遍历到第一个重复数字为止; 2. 由于数组长度为n且范围是[0, n-1],那么当数组没有重复元素时, 将其排序的结果是对应下标里的数字等于下标,则我们可以从arr[0]开始,若arr[i] == i,则i++, 否则就比较arr[i]和arr[arr[i

2016-08-06 22:27:36 216

Linux内核设计与实现_第三版_高清

Linux内核设计与实现_第三版_高清.

2015-10-13

空空如也

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

TA关注的人

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