08 2011 档案
摘要:虚拟机的nat上网,有时候好的,有时候又不行。我晚饭都没吃,一直在那儿配置啊配置,结果还是不行。纠结了好久,最后因为走得晚车都没法取,往公交卡里充了两块钱赶公交回来的。悲剧啊,以下午连程序都没有看,净在弄那些个烦人的配置了。以后千万不能这样,如果一个问题没有好的解决方法,一定要去寻求,或者暂时先放下。因为时间有限,可能还有别的事做,最忌不断重复无效的行动。最后找到连不上的原因了,原来是vmware nat和vmware dhcp服务被禁了。以前优化系统的时候不注意,把这两个服务给去掉了,可想而知,再怎么配置都不可能成功的。总结如下:如果本机已经是在局域网中用nat方式上网,虚拟机再选用nat方
阅读全文
摘要:TCP连接的建立: 下述步骤建立一个TCP连接: 1.服务器必须准备好接受外来的连接。这通过调用socket、bind和listen函数来完成,称为被动打开(passive open)。 2.客户通过调用connect进行主动打开(active open)。这引起客户TCP发送一个SYN分节(表示同步),它告诉服务器客户将在(待建立的)连接中发送的数据的初始序列号。一般情况下SYN分节不携带数据,它只含有一个IP头部、一个TCP共部及可能有的TCP选项。 3.服务器必须确认客户的SYN.同时自己也得发送一个SYN分节,它含有服务器将在同一连接中发送的数据的初始序列号。服务器以单个分节向客...
阅读全文
摘要:1 成员变量除了静态成员不能再定义类时初始化。2因为只有当一个类的类体已经完整时 它才被视为已经被定义 所以一个类不能有自身类型的数据成员 但是 当一个类的类头被看到时 它就被视为已经被声明了 所以一个类可以用指向自身类型的指针或引用作为数据成员 。3只有被声明为const 的成员函数才能被一个const 类对象调用 关键字const 被放在成员函数的参数表和函数体之间 对于在类体之外定义的const 成员函数 我们必须在它的定义和声明中同时指定关键字const4 为了允许修改一个类的数据成员 即使它是一个const 对象的数据成员 我们也可以把该数据成员声明为mutable 易变的 m...
阅读全文
摘要:首先声明,这里不是说的图的深度优先遍历和广度优先遍历,而是心情随笔,哈哈。计算机技术的各个领域,都有他存在的必要,所谓存在即合理。而我又是一个比较“花心”的人,看到什么技术挺好玩,总要去摸一摸,耍一耍。刚开始看到有人写了个程序,把一个复杂的计算瞬间算出来了,好玩,看到有人做出了漂亮的界面,酷,看到有人谈论自己听不懂的算法,高端,...于是都想去学一下。一开始只知道有个windows,看到api什么的觉得最高级了,后来又认识了linux,哦,原来还有另一番天地。在计算机的世界里,你知道的总是那么一点点,还有很多很多,是你不知道的,而且永远比你知道的要酷。今天看看这个,明天搞搞那个,其实日子挺舒服
阅读全文
摘要:首先想建堆的办法,需要n/2 * 2次比较,至多n/2次交换建立大根堆或者小根堆;假设建立的是大根堆,对叶子节点进行n/2-1次比较的到最小值,比较次数3n/2。这个方法还可以用于得到最大的或者最小的前k个数,只需建堆后进行层次遍历即可。另一种方法是假设数组的前两个数时最大值和最小值,然后每次从后面的元素中取出两个,这两个中大的跟“最大值”比较,小的跟"最小值"比较,根据比较情况进行交换,这样每组数进行了三次比较,总共比较了n / 2 * 3次,可能交换次数也是 n/2,可见跟建堆的方法复杂度差不多, 也是3n/2,当然具体根据个数的奇数偶数差个一次二次的。这里有篇文章,关
阅读全文
摘要:今天从下载了一个查找树库的源代码,奇怪的是这个库里声明的树节点没有数据域。于是很奇怪,没有数据域怎么用呢,难道这个库不能用?然后看了库的readme文档,找到了原因。原来为了应用的广泛性,这个库被故意设计成与数据域无关,用户在使用该库的时候,应当把数据域和库中的树节点封装成自己的数据结构,库中的函数操作事与用户数据类型无关的,仅仅需要用户提供一个比较函数而已。那么问题出来了,既然提供的比较函数参数中不能出现用户类型,因为库中的操作时与用户类型无关的;那么怎么才能让比较函数取到用户数据进行操作呢?没看库的代码时,对这个问题想了很久,始终不得其解,最终看了源代码,发现了该库的作者的做法。巧妙处正是
阅读全文
摘要:二叉树的递归遍历方法形式很统一:void Traverse(BiTree T){ if(T){ //visit,先序遍历 Traverse(T->lchild); //visit,中序遍历 Traverse(T->rchild); //visit,后序遍历 }}可是非递归遍历呢?前序和中序还好,跟递归的形式差不多:void InOrderTraverse(BiTree T, status(* visit)(TElemType e)){ InitStack(s); p=T; while(p || !StackEmpty(s)){ if(p){ //visit,先序遍历 Push(s,
阅读全文
摘要:≯TF≮的[转]VI批量替换文本,多行删除,复制,移动:n1,n2 m n3 移动n1-n2行(包括n1,n2)到n3行之下;:n1,n2 co n3 复制n1-n2行(包括n1,n2)到n3行之下;:n1,n2 d 删除n1-n2行(包括n1,n2)行;vi替换使用规则::g/s1/s/s2/s3/g第一个g表示对每一个包括s1的行都进行替换,第二个g表示对每一行包括s1的行所有的s2都用s3替换s表示替换,s2是要被替换的字符串,他可以和s1相同(如果相同的话用//代替),s3是替换字符串在vi界面下使用命令 :%s#/usr/bin#/bin#g 可以把文件中所有路径/usr/bin换成
阅读全文
摘要:STL的内容十分繁杂,可以专门作为一个专题来学。由于现在还在入门阶段,所以不应过多的把精力投入到对标准库的研究上。主要精力应该在C++的基本机制和特性上。做一些标准C++的简单练习。基本掌握后才是进一步的研究库。1 .我们的min()函数是模板机制的功能强大性与局限性的一个很好例子 template <typename Type> const Type&min( const Type *p, int size ){ int minIndex = 0; for ( int ix = 1; ix < size; ++ix ) if ( p[ ix ] < p[ mi
阅读全文
摘要:主要就是参照百度百科来的,本文目的是自己学习备忘。问题描述:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。测试数据:1物品数 5, 背包容量 100, 重量及价格77 92 22 22 29 87 50 46 99 902物品数 8, 背包容量 200, 重量及价格 79 83 58 14 86 54 11 79 28 72 62 52 15 48 68 62解法1,dp方法(同时打印出选了哪些物品1表示选,0表示不选):#include <stdio.h>#define N 5#define ...
阅读全文
摘要:/*基数排序又称桶排序,原理是按照每一位分别进行排序,时间复杂度较低,适用于顺序和链式存储结构*/#include <stdio.h>#define D 2 //最大位数#define N 7 //数据个数int main (){ int buk[10][N] = { 0 };//存放按一位排序后数据的桶 int in_len[10] = { 0 };//存放按位放到桶中的数,每一位分别有多少个 int data[N] = { 15, 8, 21, 19, 30, 5, 0 }; int i, j, k, m, n; int lsb; lsb = i = j = k = m = n
阅读全文
摘要:在出现系统选择界面时,在Red Hat Linux的选项上按“e”键,然后会出现三个选项,在“kernel/boot/vmlinuz-2.4.18-14 ro root=LABEL=/”上按“e”键进行编辑,在“ro”或者“root”前加上“single”,然后回车返回。按“b”键启动,进入字符界面,当出现“sh-2.05b#”时,就意味着已经进入单用户模式。现在,输入“passwd root”,就可以重新设置root密码了。设置完成后,reboot重启,用刚才设置的密码就可以进入linux系统了。一. lilo1. 在出现 lilo: 提示时键入 linux single画面显示 lilo:
阅读全文
摘要:#include <stdio.h>typedef enum { first=1, second, third } Stack;void hannoi (Stack from, Stack to, unsigned int n){ if (n == 1) printf ("%d-->%d\n",from, to); else { /* 6-from-to表示除了源柱子和目的柱子的另一根柱子 */ hannoi (from, 6-from-to, n-1); hannoi (from, to, 1); hannoi (6-from-to, to, n-1);
阅读全文
摘要:思路:设R={r1,r2,..rn} 是要进行排列的n个元素,Ri=R-{ri}.集合X中元素的全排列记为perm(X);设(ri)perm(X)表示每一个全排列前加上前缀ri得到的排列.当n=1时,perm(R)=(r) 其中r是唯一的元素,这个就是出口条件.当n>1时,perm(R)由(r1)perm(R1),(r2)perm(R2),...(rn)perm(Rn)构成.程序如下:#include <stdio.h>void swap(int *a, int *b) { int m = *a; *a = *b; *b = m; } void perm(int list[]
阅读全文
摘要:堆排序堆排序是一种选择排序。是不稳定的排序方法。时间复杂度为O(nlog2n)。堆排序的特点是:在排序过程中,将排序数组看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中双亲节点和孩子节点之间的内在关系,在当前无序区中选择关键字最大(或最小)的记录。基本思想1.将要排序的数组创建为一个大根堆。大根堆的堆顶元素就是这个堆中最大的元素。2.将大根堆的堆顶元素和无序区最后一个元素交换,并将无序区最后一个位置例入有序区,然后将新的无序区调整为大根堆。重复操作,无序区在递减,有序区在递增。初始时,整个数组为无序区,第一次交换后无序区减一,有序区增一。每一次交换,都是大根堆的堆顶元素插入有序区,所以有序
阅读全文
摘要:归并排序(MergeSort),又称合并排序.【工作原理】假如有7个记录,要对这7记录进行排序1、把它这些记录每组2个(最后一组有可能只有1个),一共4组2、分别把这4组排序好,再把这4组两两合并为1组,得到2组。3、在合并的同时排序,使得得到的合并的后的每组都是有序的4、将最后这两组合并成一组有序的序列。【正确性】归并排序是一个典型的分治合并算法,对一个大小的记录序列排序,可以把记录划分成2个记录序列,如果这两个子序列还是不能直接排序,则一真划分,直到序列剩下2个素或者1个元素。分治完毕后再依次两两,直至合并成一个有序表。 【算法5 - 1】合并算法,该算法与数据结构算法2.7是相同的v..
阅读全文
摘要:1异常使用示例:try { for ( int ix = 1; ix < 51; ++ix ) { if ( ix % 3 == 0 ) stack.push( ix ); if ( ix % 4 == 0 ) stack.display(); if ( ix % 10 == 0 ) { int dummy; stack.pop( dummy ); stack.display(); } }}catch ( pushOnFull ) { ... }catch ( popOnEmpty ) { ... }其中的push...
阅读全文
摘要:1用宏扩展机制实现的函数,虽然没有类型的限制,但是有一定的危险,比如调用时传入p++等,可能出错。如:#define min(a,b) ((a) inline Type min( Type, Type );// 错误: inline 指示符放置的位置错误inlinetemplate Type min( Array, int );3函数模板指定了怎样根...
阅读全文
摘要:1 .缺省实参可以使多个函数进入到可行函数集合中 可行函数是指可以用调用中指定的实 参进行调用的函数 可行函数可以有比函数调用实参表中的实参个数更多的参数 只要每个 多出来的参数都有相应的缺省实参即可 extern void ff( int ); extern void ff( long, int = 0 ); int main() { ff( 2L ); // 匹配 ff( l...
阅读全文
摘要:1 .头文件不应该含有非inline 函数或对象的定义 例如 下面的代码表示 的正是这样的定义 因此不应该出现在头文件中 extern int ival = 10; double fica_rate; extern void dummy() {} 虽然ival 是用extern 声明的 但是它的显式初始化使得它实际上是个定义 类似的情况 虽然dummy()显式地声明为exter...
阅读全文
摘要:1 缺省实参(在声明中指定)函数可以用参数表中的初始化语法为一个或多个参数指定缺省实参 例如 假设一个函数创建并初始化一个二维字符数组以便模拟终端显示器 则我们可以为屏幕的高 宽和背景字符提供缺省实参 char *screenInit( int height = 24, int width = 80, char background = ...
阅读全文
摘要:1为了提高效率 ,实际上vector 并不是随每一个元素的插入而增长自己, 而是当vector 需要增长自身时, 它实际分配的空间比当前所需的空间要多一些。2 为了定义一个容器对象 我们必须先包含相关联的头文件 应该是下列头文件之一 #include #include #include #include #include 容器对象的定义以容器类型的名字开始, 后面是所包含的元素的实...
阅读全文
摘要:这一章的内容与C语言的内容差别不大,先前比较熟悉。只是在写最后一节ilist类的代码是,inline的用法遇到了一些问题。于是各处寻求标准,最后决定相信CSDN上wanzhanhang一篇博文的内容。如下:inline函数(摘自C++ Primer的第三版)(一)在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联。 inline int min(int fir...
阅读全文

浙公网安备 33010602011771号