- 博客(19)
- 收藏
- 关注
原创 cbegin()和cend() -- 返回const_iterator对象
C++11开始,可以使用关键字auto代替迭代器的精确类型。 因此如果我们直接以begin()初始化迭代器,就可以使用auto声明其类型:for(auto pos = obj.begin(); pos != obj.end(); ++pos){ cout << *pos << ' ';}auto优点之一就是程序比较浓缩精简。 如果没有auto,循环内生命迭代器动作应该(举例)如下:f
2016-04-28 20:53:17 5330
原创 求二叉树镜像 -- 采用递归和非递归方法
/*求二叉树镜像 -- 采用递归和非递归方法经调试可运行源码及分析如下:***/#include <stdlib.h>#include <iostream>#include <queue>using std::cout;using std::cin;using std::endl;using std::queue;/*二叉树结点定义*/typedef struct BTreeNod
2016-04-15 19:08:06 590
原创 两个二叉树结构是否相同(结构和数据都相同) -- 递归和非递归方法
/*两个二叉树结构是否相同(结构和数据都相同) -- 递归和非递归方法经调试可运行源码及分析如下:***/#include <stdlib.h>#include <iostream>#include <queue>using std::cout;using std::cin;using std::endl;using std::queue;/*二叉树结点定义*/typedef st
2016-04-15 15:44:25 907
原创 判断两个二叉树是否相等(仅结构) -- 递归和非递归实现
/*判断两个二叉树是否相等(仅结构,不包括数据)经调试可运行源码及分析如下:***/#include <stdlib.h>#include <iostream>#include <queue>using std::cout;using std::cin;using std::endl;using std::queue;/*二叉树结点定义*/typedef struct BTreeN
2016-04-15 13:32:55 4382
原创 二叉树第K层的第M个节点 -- 采用非递归层次遍历实现
/*二叉树第K层的第M个节点 -- 采用非递归层次遍历实现经调试可运行源码及分析如下:***/#include <stdlib.h>#include <iostream>#include <queue>using std::cout;using std::cin;using std::endl;using std::queue;/*二叉树结点定义*/typedef struct B
2016-04-14 21:55:53 842
原创 二叉树第K层叶子节点个数 -- 采用递归和非递归方法实现
/*二叉树第K层叶子节点个数 -- 采用递归和非递归方法经调试可运行源码及分析如下:***/#include <stdlib.h>#include <iostream>#include <queue>using std::cout;using std::cin;using std::endl;using std::queue;/*二叉树结点定义*/typedef struct BT
2016-04-14 17:06:33 1478
原创 二叉树第K层节点个数 -- 采用递归和非递归方法
/*二叉树第k层节点个数 -- 采用递归和非递归方法经调试可运行源码及分析如下:***/#include <stdlib.h>#include <iostream>#include <queue>using std::cout;using std::cin;using std::endl;using std::queue;/*二叉树结点定义*/typedef struct BTre
2016-04-14 15:51:50 7205 6
原创 二叉树叶子节点个数计算 -- 采用递归和非递归方法实现
/*求二叉树叶子节点个数 -- 采用递归和非递归方法经调试可运行源码及分析如下:***/#include <stdlib.h>#include <iostream>#include <stack>using std::cout;using std::cin;using std::endl;using std::stack;/*二叉树结点定义*/typedef struct BTre
2016-04-14 13:50:09 5770
原创 二叉树层次遍历(借助队列实现)
/*按层次遍历二叉树 *经调试可运行源码及分析如下:***/#include <stdlib.h>#include <iostream>#include <queue>using std::cout;using std::cin;using std::endl;using std::queue;/*二叉树结点定义*/typedef struct BTreeNode{ ch
2016-04-14 13:09:17 6778
原创 求二叉树节点数 -- 采用递归和非递归方法
/*求二叉树节点数 -- 采用递归和非递归方法(本例非递归采用先序遍历)经调试可运行源码及分析如下:***/#include <stdlib.h>#include <iostream>#include <stack>using std::cout;using std::cin;using std::endl;using std::stack;/*二叉树结点定义*/typedef s
2016-04-14 05:26:35 4316
原创 求二叉树深度 -- 递归和非递归实现
/*求二叉树深度 -- 采用递归和非递归方法**经调试可运行源码及分析如下:*/#include <stdio.h>#include <stdlib.h>#include <iostream>#include <queue>using namespace std;/*二叉树结点定义*/typedef struct BTreeNode{ char elem; stru
2016-04-14 04:18:44 1671
原创 二叉树后序遍历 -- 递归和非递归实现
/*实现二叉树后序遍历 -- 采用递归和非递归方法*经调试可直接运行源码如下:***/#include <stdio.h>#include <stdlib.h>#include <iostream>#include <stack>using namespace std;/*二叉树结点定义*/typedef struct BTreeNode{ char elem; st
2016-04-13 10:05:59 591
原创 二叉树中序遍历 -- 递归和非递归实现
/* 实现二叉树中序遍历 -- 采用递归和非递归方法** 经调试可直接运行源码如下**/#include <stdio.h>#include <stdlib.h>#include <iostream>#include <stack>using namespace std;/*二叉树结点定义*/typedef struct BTreeNode{ char elem;
2016-04-12 22:32:14 727
原创 二叉树先序遍历 -- 递归和非递归实现
/**实现二叉树先序遍历 -- 采用递归和非递归方法,经调试可直接运行源码如下:*/#include <stdio.h>#include <stdlib.h>#include <iostream>#include <stack>using namespace std;/*二叉树结点定义*/typedef struct BTreeNode{ char elem; str
2016-04-12 21:07:16 599
原创 pthread_atfork函数 -- 多线程程序fork时互斥锁的处理
如果一个多线程程序的某个线程调用了fork函数,那么新创建的子进程是否将自动创建和父进程相同数量的线程呢? 答案是不会,子进程只拥有一个执行线程,它是调用fork的那个线程的完整复制。 并且子进程将自动继承父进程中互斥锁的状态。 也就是说,父进程中已经加锁的互斥锁在子进程中也是被锁住的。 这引来的问题:子进程可能不清楚从父进程中继承而来的互斥锁的具体状态(加锁或者解锁状态未知)。 这个互斥
2016-04-07 14:20:13 2998
原创 进程间传递文件描述符
由于fork调用之后,父进程打开的文件描述符在子进程中仍然保持打开,所以文件描述符可以很方便的从父进程传递到子进程。需要注意的是,传递一个文件描述符并非传递一个文件描述符的值,而是要在接收进程中创建一个新的文件描述符,并且该文件描述符和发送进程中被传递的文件描述符指向内核中相同的文件表项。如何把子进程中打开的文件描述符传递给父进程呢?即如何在两个不相干的进程之间传递文件描述符呢?在Linux下,我们
2016-04-06 20:58:50 2354 1
原创 SIGURG信号 -- 带外数据的处理
使用SIGURG处理带外数据程序实例:#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <assert.h>#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <errno.h>#include <str
2016-04-06 00:18:11 2979
原创 select同时处理普通数据及带外数据
select系统调用,同时处理普通数据及带外数据程序源码:#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>#incldue <assert.h>#include <stdio.h>#include <unistd.h>#include <errno.h>
2016-04-04 23:24:04 637
原创 select系统调用 -- 文件描述符就绪条件
select系统调用原型如下:#include <sys/select.h>int select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, struct timeval* timeout);参数readfds, writefds, exceptfds参数分别指向可读、可写和异常事件对应的文件描述符集合。哪些情况下
2016-04-04 22:21:12 3024
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人