上一页 1 ··· 5 6 7 8 9 10 11 12 下一页
摘要: C#类在什么时候分配内存 一直以为内存分配是在调用构造函数的时候。现在发现我错了。 昨天在看C++的赋值运算时,想做一下笔记。一个类赋值给另一个类时,先调用构造函数,在给成员变量一个个赋值,静态成员变量不用赋值,因为静态成员变量属于类,被类的所有实例共享,所以不用被赋值,方法属于类,不用被赋值,也赋不了值。突然想到调用静态的属性或方法时不需要调用构造函数,因为调用构造函数只是产生一个新的实例,静态的属性或方法属于类吗,调用它们根本不用产生实例,我突然想尖叫,不调用构造函数,怎么分配内存,不分配内存类的属性存哪里,连内存都没有怎么访问它。所以我猜测内存在调用构造函数之前就分配好了,构造函数只是. 阅读全文
posted @ 2011-08-04 11:35 啊汉 阅读(8131) 评论(83) 推荐(7) 编辑
摘要: 四种方式实现--从尾到头输出链表 方法一:借用栈倒序输出链表 方法二:先翻转链表,再顺序输出 方法三:递归实现,一个字妙,两个字很妙,三个字太妙了 方法四:用数组实现 方法一:借用栈倒序输出链表 因为栈是先进后出,把链表中的元素存进栈中,链表前面的元素在栈底,后面的元素在栈顶,链表后面的元素先出栈 方法二:先翻转链表,再按顺序打印(主要是想自己实现单链表的翻转,这种实现方式破坏了链表的结构,当然再翻转一下就还原了) 翻转链表的步骤: 1:将当前节点的next节点指向他以前的前一个节点 2:当前节点下移一位 3:如果是最后一个节点,就把它的next节点指向它以前的前一个节点... 阅读全文
posted @ 2011-08-01 19:33 啊汉 阅读(5089) 评论(2) 推荐(2) 编辑
摘要: 经典算法题--求对策字符串的最大长度(第二版)方法一:思路很中规中矩,遍历这个字符串,若有发现相邻的两个字符相等,就循环判断与这两个字符相邻的两个字符是否相等, 直到不等,记下字符符合条件的字符个数。最大的个数即为所求。(此方法适合如google这样的字符串)方法二:思路和方法一时一样的,适合ggoggle这样的字符串。方法三:满足题意,适合任何类型的字符串。就是时间复杂度为O(n^2)。方法一int counterplan1(conststring str) { int strlen=str.length(); int maxlen=0; ... 阅读全文
posted @ 2011-07-25 14:41 啊汉 阅读(1903) 评论(4) 推荐(1) 编辑
摘要: 题目:输入一个字符串,输出该字符串对称子字符串的最大长度,如输入google,则输出4.方法一:思路很中规中矩,遍历这个字符串,若有发现相邻的两个字符相等,就循环判断与这两个字符相邻的两个字符是否相等, 直到不等,记下字符符合条件的字符个数。最大的个数即为所求。方法二:在方法一的基础上略有改动,思路还是一样,只不过不是一发现相邻的两个字符相等就开始循环, 而是根据上次出现对称的字符个数比较对应的两个字符是否相等,如果不等,那肯定是不用循环的,我们要求最大的长度吗?哈哈哈... 如果相等,就向里循环,判断里面的字符是否相等,不等就退出循环,如果都相等的话,说明更长的长度出现了, 我们开始向外循环 阅读全文
posted @ 2011-07-22 17:55 啊汉 阅读(2830) 评论(11) 推荐(1) 编辑
摘要: C++自己实现list 前两个博客发表了自己写的stack(栈)和queue(队列),感觉比较简单,今天想试着实现list,结果发现,不是那么容易,感觉自己对STL的底层不是很了解,真要自己实现还真的很难,看STL的源代码,那个晕啊...那代码也写得太难理解了,当然跟我不了解有关,但我相信,在将来的某一天我会懂的,你看我的代码也会懂的。 话说:STL中的list的内部结构就是一个双向链表,这个东东以前还真没有玩过,就凭他用的是双向链表我就不想用他,指针太多,耗资源,当然存在就有他的价值,他能快速访问其中的元素。废话总该少说,代码就该多些。 有那么一点高兴的是实现双向链表的翻转,其他的没什... 阅读全文
posted @ 2011-07-21 19:00 啊汉 阅读(8361) 评论(16) 推荐(3) 编辑
摘要: 7种方式实现斐波那契数列一:递归实现 在学校里学习递归的时候,老师就喜欢举斐波那契这个例子,看!多简洁清晰。其实这个例子是非常不适合作为递归举例的, 原因就是效率太慢,除了最后一个数,每个数都被算了一遍又一遍,时间复杂度差不多是5n^2/3。二:数组实现 空间复杂度和时间复杂度都是0(n),效率一般,比递归来得快。三:vector<int>实现 时间复杂度是0(n),时间复杂度是0(1),就是不知道vector的效率高不高,当然vector有自己的属性会占用资源。四:queue<int>实现 当然队列比数组更适合实现斐波那契数列,时间复杂度和空间复杂度和vector&l 阅读全文
posted @ 2011-07-15 14:29 啊汉 阅读(22421) 评论(18) 推荐(5) 编辑
摘要: C++用数组和链表分别实现Queue昨天写了《C++用数组和链表分别实现Stack》,今天就是《C++用数组和链表分别实现Queue》,队列就是先来的先被处理掉,后来的就等,直到成为先来的,实现起来感觉和栈差不多。模板好用的,功能强大,有些东东还是写成模板的好,废话昨天都说了,今天是不想说的,博客园的哥们说我的博客不符合推荐到首页的要求,只好加几句废话。链表版template<typename T,typename container>class queue {public:bool empty() const{return len==0;}void checkEmpty(){if 阅读全文
posted @ 2011-07-12 16:21 啊汉 阅读(4945) 评论(4) 推荐(2) 编辑
摘要: C++用数组和链表分别实现Stack C++学习有段时间了,感觉还是有很多不足啊,今天自己用数组和链表分别实现Stack,当然STL中的Stack肯定不是这么简单,你不妨看一下,说不定有收获呢,若发现有问题,请指正,毕竟对于C++我还是新手。数组版//typename可以表示任何类型,而class只能表示类template<typename T,typename container>class stack{public://栈是否为空bool empty( ) const{return index==0;}//出栈void pop( ){if(empty()){thrownew e 阅读全文
posted @ 2011-07-11 18:22 啊汉 阅读(5545) 评论(22) 推荐(2) 编辑
摘要: 作者:陈太汉是的。我们讨厌产生临时变量,因为它要占用我们的内存,消耗我们的CPU时间,让我们的程序性能降低。但有时候它是必须的。那讨厌的临时变量什么时候产生呢?产生临时变量的三种情况:一:以By Value的方式传值;二:参数为const的类型。三:类型转换一:以By Value的方式传值。 我们都知道,引用类型和指针类型传递的都是地址,可以直接对地址中存放的数据进行操作, 而以传值的方式传递参数,就会在heap中重新分配一个临时区域, 将实参中的数据拷贝到临时区域中,而你对这分数据进行的任何的操作都不会影响实参的内容,因为实参跟形参只是内容相同, 分别在两块不同的内存中。而引用和指针操作的是 阅读全文
posted @ 2011-07-04 15:54 啊汉 阅读(4290) 评论(6) 推荐(1) 编辑
摘要: 作者:陈太汉算法--找出数组中出现次数超过一半的数 每当我看到经典的算法题,就怀念高中,感觉很多算法题就是高中的题目,谁叫哥只读了个专科,高数基本相当没学。 有空要看看高数啊,想当年数学那是相当的......#include <iostream>using namespace std;class FindTheOne{public: 方法一 第一个想到的方法是见一个二维数组,一维存数组中的数据,二维存这个数出现的次数。出现次数最多的那个数就是要找的那个数 由于某个数出现的次数超过数组长度的一半,所以二维数组的长度只需要这个数组的一半。代码实现如下, 当然这个方法很糟糕,时间复杂度和 阅读全文
posted @ 2011-06-29 16:22 啊汉 阅读(19401) 评论(13) 推荐(3) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 下一页