我们先来看一张之前整理过的一张二叉树的链式存储结构
1、每个数据域,都有2个指针域,分别指向该节点的左孩子、右孩子,但是每个节点前驱、后继,要知道的话需要遍历整棵树,这在时间上耗费很大。
2、另外,在叶子节点中,我们可以看到如图,每个节点都会浪费2块存储空间,N个节点的二叉树,2N个指针域,连接线为2N-1,那么会有2N-(N-1) = N+1个指针域浪费掉。
为了优化以上2...
分类:
其他好文 时间:
2014-05-15 13:30:19
阅读次数:
283
关于空指针的一些理解1.当定义一个空指针时,无论什么类型,都是需要再用之前分配内存,用完之后要销毁。不要觉得让这个指针指向一段内存就万事大吉了,这很可能是让你崩溃的隐患!2.千万不要随意使用空指针,尤其是在大意忘了给这个指针开辟空间就使用它,虽然编译甚至运行刚开始阶段没有问题,但是在一定时间会出现很...
分类:
其他好文 时间:
2014-05-15 09:39:20
阅读次数:
249
面向对象编程--句柄类与继承引言: C++中面向对象编程的一个颇具讽刺意味的地方是:不能使用对象支持面向对象编程,相反,必须使用指针或引用。void get_prices(Item_base object,
Item_base *pointer,
Item_base &reference)
{
//需要根据指针或引用实际所绑定...
分类:
编程语言 时间:
2014-05-15 08:19:33
阅读次数:
359
节点形态:
存储结构:
每个节点都包含一个标志域,如果为0(即原子),那么仅含一个值域,如果是1(列表),那么说明该节点包含两个指针域。
需要注意的是求广义表长度的操作,其实计算的是根节点及其兄弟的个数,比如图2中广义表的长度为2,图3中广义表的长度为4。
深度的定义方式是递归式的,定义空表深度为1,原子深度为0,广义表的深度...
分类:
其他好文 时间:
2014-05-15 07:57:32
阅读次数:
331
面向对象编程--句柄类与继承[续]三、句柄的使用 使用Sales_item对象可以更容易地编写书店应用程序。代码将不必管理Item_base对象的指针,但仍然可以获得通过Sales_item对象进行的调用的虚行为。1、比较两个Sales_item对象 在编写函数计算销售总数之前,需要定义比较Sales_item对象的方法。要用Sales_item作为关联容器的关键字,必须能够比较它们。关联容器默认...
分类:
编程语言 时间:
2014-05-15 07:55:23
阅读次数:
255
int *p;//(int
*)修饰的是内存地址,也就是32位二进制无符号整数//*p等价于int类型数据//p
一个内存地址//*根据内存地址取出内容//&根据变量取出地址//任何类型的指针都占4个字节int a,
b; scanf("%d%d",&a,&b);//接收输入值 printf("%d...
分类:
编程语言 时间:
2014-05-15 07:46:49
阅读次数:
275
指向const对象的指针,例如:const int
*pival;pival是以个指向int类型const对象的指针,const限定pival指针所指向的对象类型,而并非pival本身,也就是说,pival并不是const,在定义时不需要对它进行初始化,如果需要,允许给pival重新赋值,使其指向另...
分类:
其他好文 时间:
2014-05-15 07:44:06
阅读次数:
197
参考文献:iOSARC完全指南提示本文中所说的"实例变量"即是"成员变量""局部变量"即是"本地变量"一、简介ARC是自iOS5之后增加的新特性完全消除了手动管理内存的烦琐编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你不再需要担心内存管理,因为编译器为你处..
分类:
其他好文 时间:
2014-05-15 00:55:48
阅读次数:
348
题意:交换给定链表中的相邻节点,但不可以改变链表里的值
如1->2->3->4交换后为2->1->4->3
思路:
按题意中的扫描去改变每两个相邻节点的next指针的指向即可。
小技巧:
因为处理每两个相邻节点的时候,需要一个指针记录它们前一个节点,而头节点前面没有节点,
所以可设置一个dummy节点指向头指针,这样开头的两个节点的处理方式跟其它的相邻节点的处理方式就一样了
复杂度:时间O(n),空间O(1)...
分类:
其他好文 时间:
2014-05-15 00:16:00
阅读次数:
359