09 2013 档案
摘要:typedefstruct_list_node{ doublekeyVal; struct_list_node*next;}ListNode;Q1单链表的反序 ListNode* reverseList(ListNode* head) { ListNode *p1, *p2 , *p3; //链表为空,或是单结点链表直接返回头结点 if (head == NULL || head->next == NULL) { return head; } p1 = head; p2 = head->next; whi...
阅读全文
摘要:题目:已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10。分析:要保证rand10()在整数1-10的均匀分布,可以构造一个1-10*n的均匀分布的随机整数区间(n为任何正整数)。假设x是这个1-10*n区间上的一个随机整数,那么x%10+1就是均匀分布在1-10区间上的整数。由于(rand7()-1)*7+rand7()可以构造出均匀分布在1-49的随机数(原因见下面的说明),可以将41~49这样的随机数剔除掉,得到的数1-40仍然是均匀分布在1-40的,这是因为每个数都可以看成一个独立事件。下面说明为什么(rand7()-1)*7
阅读全文
摘要:函数调用的开销: 函数被调用时,要有函数调用和返回。要保存当前程序上下文信息,以便函数调用完毕后返回原来的地方,继续执行程序。将函数的参数进行压栈、出栈,执行函数,函数调用完毕后释放内部变量占用的内存。inline作用: 将函数声明为inline,是对编译器的一种建议,编译器可以选择不进行inline。大多数编译器是在编译过程中进行inline。所以不能对virtual函数进行inline,因为编译的时候编译器不知道该调用哪个函数。编译器也不对通过函数指针进行的调用实施inlining. 不要轻易的对构造函数和析构函数进行inline,因为即使看着函数体是空的,其实内部编译器会产生一些代...
阅读全文
摘要:管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。命名管道 (named pipe) : 命名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递
阅读全文