摘要: 几个基本的线程函数:(本人有强迫症,为了分清返回值、函数名、参数列表,间距有点大,用的时候不要这样)线程操纵函数1 int pthread_create (pthread_t *tidp, const pthread_attr_t *attr, (void*)(*start_rtn)(void ... 阅读全文
posted @ 2014-08-17 17:45 阿杰的专栏 阅读(353) 评论(0) 推荐(0) 编辑
摘要: 看到有一个博客讲的比平时理解的更深入,mark一下:strcpy函数的实现这里只写平时理解的,三个要点: 1 //strcpy自己实现 2 3 char *strcpy(char *dest, const char *src) 4 { 5 assert(dest != NULL && sr... 阅读全文
posted @ 2014-08-17 15:30 阿杰的专栏 阅读(689) 评论(3) 推荐(0) 编辑
摘要: 题目:给出二叉树的一个结点,返回它中序遍历顺序的下一个结点。思路:如果有指向父亲的结点,则:如果当前结点有右儿子,或者当前结点是根结点,则后继结点为右子树的最左叶节点;否则,如果当前结点是父结点的左儿子,则后继结点就是父结点;(其实是第三种情况的一个特例,即自己是第0代祖先,返回第一代祖先)否则,向... 阅读全文
posted @ 2014-08-17 15:10 阿杰的专栏 阅读(3191) 评论(0) 推荐(0) 编辑
摘要: 题目:给定一棵二叉树,将所有的结点都放到左儿子的位置,即除了root结点外,每一个结点都是其他某一个结点的左儿子。不用保持某种顺序,不能递归,O(1)空间。思路:我的想法是,维持一个遍历指针p,另一个指针tail永远指向向左遍历到底的结点;初始化p和tail都为root,开始循环:如果p为叶子结点,... 阅读全文
posted @ 2014-08-17 10:50 阿杰的专栏 阅读(713) 评论(0) 推荐(0) 编辑
摘要: 反证法。素数的因式分解中,因子只有1和它本身。否则就是合数。假设素数是有限的,设为p1、p2、... 、pn,令px = p1 × p2 × ... × pn + 1,px除以任一个素数pi (1 <= i <= n) 的余数都是1,则px只能被1和其本身整除,px也是素数。与假设条件相矛盾,则素数... 阅读全文
posted @ 2014-08-17 10:13 阿杰的专栏 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 题目:单链表的归并排序,返回排序后的链表。传统的归并都是数组,可以随机访问元素,链表则需要顺序遍历找中间结点。思路:设置两个指针,一个步长为1, 一个步长为2,当快指针到达尾结点时,慢指针指向中间结点,时间复杂度为O(N);平分为左链表L1和右链表L2,递归分裂,直到链表为空或者只有一个结点;将链表... 阅读全文
posted @ 2014-08-17 03:23 阿杰的专栏 阅读(9484) 评论(1) 推荐(1) 编辑
摘要: 原理和方法可以参考: 图的深度优先遍历教科书上的C代码,递归: 1 //教科书方法,邻接表 2 bool visited[MAX]; 3 void visitFunc(int v); 4 5 void dfsTraverse(Graph G) 6 { 7 for(v = 0; v vis... 阅读全文
posted @ 2014-08-17 02:57 阿杰的专栏 阅读(1394) 评论(0) 推荐(0) 编辑