上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 57 下一页
摘要: 使用循环计数法的目的是为了高效。 添加Queue.h文件: 添加StaticQueue.h文件: 测试程序如下: 运行结果如下: 小结: 阅读全文
posted @ 2018-09-16 20:52 周伯通789 阅读(290) 评论(1) 推荐(0)
摘要: 自定义Test类,给出如下的测试程序: 运行结果如下: 此时栈中没有任何元素,却调用了10次构造函数和10次析构函数。 这是因为我们使用了原生数组作为存储空间,在创建栈的时候,当然会调用泛指类型T的构造函数。 我们需要另一种存储形式,来避免这种缺陷。 添加LinkStack.h文件: 测试程序如下: 阅读全文
posted @ 2018-09-16 19:37 周伯通789 阅读(193) 评论(0) 推荐(0)
摘要: 这种使用原生数组作为存储容器的栈也简称顺序栈。 添加Stack.h文件: 添加StaticStack.h文件: 测试程序如下: 运行结果如下: 小结: 阅读全文
posted @ 2018-09-16 19:28 周伯通789 阅读(355) 评论(0) 推荐(0)
摘要: 头结点不位于链表里面,只是用于定位,和内核链表不同。 将LinuxList.h添加到我们的工程中。 再添加一个DualCircleList.h文件: 我们的实现中,头结点只为了做定位用,不属于链表中的一个元素,因此,next和pre函数要跳过头结点。 单向循环链表CircleList是继承的Link 阅读全文
posted @ 2018-09-16 18:06 周伯通789 阅读(342) 评论(0) 推荐(0)
摘要: __builtin_prefetch是gcc扩展的,用来提高访问效率,需要硬件的支持。 在标准C语言中是不允许static inline联合使用的。 删除依赖的头文件,将相应的结构拷贝到LinuxList.h中: 此外,需要将container_of改写成我们自己的形式。 移植后的内核链表如下: 这 阅读全文
posted @ 2018-09-16 16:53 周伯通789 阅读(373) 评论(0) 推荐(0)
摘要: TYPE应该是一个结构体类型,MEMBER是结构体中的一个成员。 使用了这个宏之后可以得到MEMBER在TYPE中的偏移量。 0被强制类型转换成TYPE指针。 在计算机的0地址处没有TYPE结构体,0地址是留给操作系统使用的。 我们存在的疑问是将0地址转换为TYPE类型的指针,然后取MEMBER成员 阅读全文
posted @ 2018-09-16 12:44 周伯通789 阅读(518) 评论(0) 推荐(1)
摘要: 由上图可以看出来,插入和遍历的时间复杂度是不一样的。 这样不管游标在哪一个位置上,都可以通过后继或者前驱指针任意访问。 双向链表的继承层次: 单链表和双向链表应该是兄弟关系,而不应该是继承关系,因为它们的内部机制是完全不同的了。 插入新节点图解: 删除节点的步骤: 添加DualLinkList.h文 阅读全文
posted @ 2018-09-16 11:14 周伯通789 阅读(303) 评论(0) 推荐(0)
摘要: 循环链表的继承层次结构: 插入位置为0图解: 删除位置为0图解: 添加CircleList.h文件: 我们将LinkList中的函数全部做成了virtual虚函数,因为有可能将CircleList当LinkList使用。在CircleList中我们重新实现了很多函数。 在重新实现的find函数中,1 阅读全文
posted @ 2018-09-16 08:44 周伯通789 阅读(293) 评论(0) 推荐(0)
摘要: 多个智能指针指向同一片堆空间的需求是巨大的。 计数变量也是在堆空间里面定义的,它的生命周期和对象的生命周期相同。 添加SharedPointer.h文件: 测试程序如下: 运行结果如下: 第二个测试程序: 结果如下: 一个堆空间被三个指针指向,最终只释放一次。 编译警告: 提示我们要在SharedP 阅读全文
posted @ 2018-09-15 23:16 周伯通789 阅读(285) 评论(0) 推荐(0)
摘要: 思考: 使用智能指针替换单链表LinkLIst中的原生指针是否可行? 将LinkList.h中的Node指针全部改成智能指针: 测试程序如下: 运行结果如下: 程序直接崩溃了。 我们的SmartPointer设计中,一片堆空间最多只能由一个指针标识,但是我们设计的和遍历有关的函数,例如move、en 阅读全文
posted @ 2018-09-15 20:51 周伯通789 阅读(355) 评论(0) 推荐(0)
上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 57 下一页