算法导论 第10章 10.3 指针和对象实现
2016-06-13 00:00
232 查看
一、概念
1.对象的多重数组表示:对一组具有相同域的对象,每一个对象都可以用一个数组来表示2.对象的单数组表示:一个对象占据存储中的一组连续位置
二、代码
int Allocate_Object() { if(free == NULL) { cout<<"error:out of space"<<endl; exit(0); } else { int x = free; free = next[x]; return x; } } void Free_Object(int x) { next[x] = free; free = x; }
三、练习
10.3-1多重数组
key :13, 4, 8, 19, 5, 11
next:1, 2, 3, 4, 5, -1
pre:-1, 0, 1, 2, 3, 4
单数组:
13, 3, -1, 4, 6, 3, 8, 9, 6, 19, 12, 9, 5, 15, 12, 11, 18, 15
10.3-2
ALLOCATE-OBJECT() 1 if free = NIL 2 then error "out of space" 3 else x <- free 4 free <- A[x+1] 5 return x FREE-OBJECT(x) 1 A[x+1] <- free 2 free <- x
10.3-3
在这里prev域没有
在这里在这里prev域没有意义,用不到
10.3-4 见算法导论-10.3-4
假设当前的数组是紧凑的,即数组中有f个元素,都位于数组的前f个位置
分配一个新的元素时,把f+1的位置分配给它
删除一个元素时,假设待删除的元素的位置是i,先修改元素prev[i]的next指针和元素next[i]的prev指针,删除这个元素。这里数组中间就留下一个空位,让第f个元素填充这个空位,具体方法是修改元素prev[f]的next指针和元素next[f]和prev指针
10.3-5
与10.3-4类似
相关文章推荐
- 算法导论-15-3-编辑距离
- 第16章 贪心算法
- 算法导论 第22章 图算法 22.3 深度优先搜索
- 算法导论-14.3-6-MIN-GAP
- 算法导论 14.1-7 顺序统计树求逆序对 O(nlgn)
- 算法导论-15-4-计划一个公司聚会
- 算法导论-13-1-持久动态集合
- Linux2.6为数据结构分配内存-slab
- 算法导论-15-7-达到最高效益的调度
- 算法导论 第10章 10.4 有根树的表示
- 算法导论 第13章 红黑树
- 算法导论 第7章 快速排序
- 算法导论 第12章 二叉查找树
- 算法导论-24.2-有向无回路图中的单源最短路径
- 算法导论 第10章 10.1 栈和队列
- 算法导论 11.1-4 大数组的直接寻址表
- 算法导论-14-1-最大重叠点
- 算法导论-12-2-基数树
- 算法导论-14-2-Josephus排列
- 算法导论-8-3-排序不同长度的数据项