posted @ 2017-08-03 21:57
随笔分类 - 数据结构实战分析
摘要:1. 用栈实现队列 (1)问题分析:用栈实现队列等价于用“后进先出”的特性实现“先进先出”的特性! (2)解决方案 (3)实现思路:(准备两个栈用于实现队列:stack_in和stack_out) ①当有新元素入队时,将其压入stack_in ②当需要出队时: A.如果stack_out.size(
阅读全文
posted @ 2017-07-26 09:14
摘要:1. DTLib中双向链表的设计思路 (1)数据结点之间在逻辑上构成双向循环,这有别于Linux内核链表的实现。 (2)头结点仅用于结点的定位,而Linux内核链表是将头结点作为循环的一部分。 2. 实现思路 (1)通过模板定义DualCircleList类,继承自DualLinkList类 (2)
阅读全文
posted @ 2017-07-11 20:44
摘要:1. Linux内核链表的位置及依赖 (1)位置:{linux-2.6.39}\\include\linux\list.h (2)依赖 ①#include<linux\types.h> ②#include<linux\stddef.h> ③#include<linux\poison.h> ④#inc
阅读全文
posted @ 2017-07-11 17:54
摘要:1. Linux内核中常用的两个宏定义 (1)offsetof宏:用于计算TYPE结构体中MEMBER成员的偏移位置 (2)container_of宏:根据成员变量指针反推结构体对象的起始地址 2. 原理剖析 (1)巧用0地址 ①编译器清楚的知道结构体成员变量的偏移地址 ②通过结构体变量首地址与偏移
阅读全文
posted @ 2017-07-11 09:29
摘要:1. SharedPointer的设计 (1)使用类模板,通过计数机制标识堆内存 (2)堆内存被指向时,(*refCount)++ (3)指针被置空时:(*refCount)— (4)当*refCount == 0时,释放堆内存 2. 计数机制原理剖析 3. SharedPointer类的声明 4.
阅读全文
posted @ 2017-06-25 16:01
摘要:1. 链式存储的特点 (1)为了表示每个数据元素与其直接后继元素之间的逻辑关系; (2)数据元素除了存储本身的信息外,还需要存储其直接后继的信息。 (3)避免了顺序存储结构线性表在插入和删除元素时需要移动大量元素的问题。 2. 链式存储逻辑结构 (1)数据域:存储数据元素本身 (2)指针域:存储相邻
阅读全文
posted @ 2017-05-27 18:23