10 2016 档案

摘要:判断链表是否有环,定义指针一快(走2部)一慢(走1部),相遇即有环。 两个指针,一快一慢,有环,则相遇必在环内,找出相遇节点 接下来,就可以统计环中节点个数,找出环的入口节点 设节点个数为n,快指针先走n步,然后快慢指针一起一步一步走,相遇节点即环入口节点。 阅读全文
posted @ 2016-10-26 17:36 Lunais 阅读(573) 评论(0) 推荐(0)
摘要:看到一篇总结很好的TCP三次握手,学习一下,原文链接。 建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示: 先来看看如何建立连接的。 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Se 阅读全文
posted @ 2016-10-23 22:12 Lunais 阅读(662) 评论(0) 推荐(0)
摘要:在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。1. extern修饰变量的声明。 如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。 这里需要注意的是,被引用的变量v的链接 阅读全文
posted @ 2016-10-23 21:47 Lunais 阅读(55222) 评论(0) 推荐(2)
摘要:给一段地址赋值: 跳转到地址0x12345678处执行函数: 1、转化为函数指针 2、解引用 3、调用 (*(void(*)(void))0x100000000)(); 利用右左法则分析: void(*)(void)是一个返回值为void,参数为void的函数指针; (void(*)(void))0 阅读全文
posted @ 2016-10-20 22:51 Lunais 阅读(418) 评论(0) 推荐(0)
摘要:求出将1元,5元,10元,20元凑成n(n>50)的方法的个数,并输出组合结果。 F(N,M)=F(N,M-1)+F(N-VAL[M],M) F(N,M)表示 用不超过第M个值的数来表示N 的所有组合方案 阅读全文
posted @ 2016-10-20 22:33 Lunais 阅读(206) 评论(0) 推荐(0)
摘要:一道题引发的思考: 1、看一下之前写的union的特点,理解一下共享内存的概念 2、栈的增长方向是从高地址向低地址增长(数组比较特别,a[0]在低地址,a[n-1]在高地址)(堆由低地址到高地址存储) 3、小端系统 指 低字节存在低地址中,高字节存在高地址中;大端系统反之。 如上,联合体变量的大小是 阅读全文
posted @ 2016-10-20 22:31 Lunais 阅读(255) 评论(0) 推荐(0)
摘要:有一篇很不错的文章介绍右左法则,原文链接。 int *p[4]; //指针数组。 是个有4个元素的数组, 每个元素的是指向整型的指针。(数组的每个元素都是指针)int (*p)[4]; //数组指针。 它是一个指针,指向有4个整型元素的数组。 (一个指针指向有4个整型元素的数组)int *func( 阅读全文
posted @ 2016-10-17 11:36 Lunais 阅读(4801) 评论(0) 推荐(1)
摘要:一、#include <cstdlib> 字符串转换到整型数,函数原型:int atoi(const char *nptr) 注意事项:有符号整型,能转换的最大字符串是:"2147483647",所有大于这个数的字符串,转换后仍为有符号int的最大值:2147483647。 实现方法: 二、原文:h 阅读全文
posted @ 2016-10-16 22:46 Lunais 阅读(951) 评论(0) 推荐(0)
摘要:union是C++中一个类,平时自己用的比较少,了解了一些特性后觉得在内存要求比较高的地方还是大有可为,总结一下。 C++中的struct和union内部都可以定义 数据 和 函数, 两个跟 class不同的地方在于访问控制上面,class默认为private,struct和union默认为publ 阅读全文
posted @ 2016-10-16 17:35 Lunais 阅读(366) 评论(0) 推荐(0)
摘要:split作为字符串分割函数非常有用,但在C++里面没有这个函数。自己实现一个分割函数: 1、遇到多个分隔符连在一起,则不做分割 2、()内的分隔符不起作用 3、如果只有(,没有)不影响分隔符 阅读全文
posted @ 2016-10-15 22:45 Lunais 阅读(1448) 评论(0) 推荐(0)
摘要:写在前面的话: 重载是C++的重要内容,在自定义一个类的时候,需要对类中的方法进行重载,才能方便的实现相应的功能,比如一些运算符,构造,析构函数,一些功能函数等等,而C++语言自带的这些东西只使用于基本数据类型。另外,在自定义类中有指针的属性,注意一下深拷贝和浅拷贝的问题。 下面是自己的实现过程,已 阅读全文
posted @ 2016-10-14 11:08 Lunais 阅读(1085) 评论(0) 推荐(0)
摘要:printf和cout从右到左计算: a++和++a都是先自增,区别在于a++自增后将自增前的值通过临时变量返回。 阅读全文
posted @ 2016-10-06 12:40 Lunais 阅读(934) 评论(0) 推荐(0)
摘要:void print_by_level_2(treeNode* Root) { if(! Root) return; deque dequeTreeRoot; dequeTreeRoot.push_back(Root); while(!dequeTreeRoot.empty()) { treeNode *temp... 阅读全文
posted @ 2016-10-05 22:32 Lunais 阅读(303) 评论(0) 推荐(0)
摘要:原文链接:http://blog.csdn.net/feliciafay/article/details/6816871 PreOrder: GDAFEMHZ InOrder: ADEFGHMZ PostOrder: AEFDHZMG 现在,假设仅仅知道前序和中序遍历,如何求后序遍历呢?比如,已知一 阅读全文
posted @ 2016-10-05 21:38 Lunais 阅读(805) 评论(0) 推荐(0)
摘要:网络由下往上分为 物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可比性, socket则是对TCP/IP协议的封装和应用(程序员层面上)。 也可以说,TPC/IP协议 阅读全文
posted @ 2016-10-05 20:52 Lunais 阅读(169) 评论(0) 推荐(0)
摘要:an = an/2*an/2 , n为even an = a(n-1)/2*a(n-1)/2 *a , n为odd 借助位运算判断奇偶性: a & 0x1 == 0; //even偶数 a & 0x1 != 0; //odd奇数 阅读全文
posted @ 2016-10-05 17:29 Lunais 阅读(517) 评论(0) 推荐(0)
摘要:二维数组在内存中占据连续的空间。在内存中从上到下存储各行元素,在同一行中按照从左到右的顺序存储。 因此可以根据行号和列号计算出相对于数组首地址的偏移量,从而找到对应元素。 eg. int *matrix rows行columns列 matrix[ row * columns + column] 二维 阅读全文
posted @ 2016-10-05 16:06 Lunais 阅读(379) 评论(0) 推荐(0)