自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

未来之歌

保持善良,善待他人就是善待自己。

  • 博客(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关注的人

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