表
一、概念
形如A0, A1, A2, ..., AN-1的表,这个表的大小是N
将大小为0的表称为空表
对于除空表外的任何表,我们说Ai后继Ai-1(i<N),Ai-1前驱Ai(i>0)
表中的第一个元素是A0,最后一个元素是AN-1
元素Ai在表中的位置是i+1
二、操作
printList
makeEmpty
find:返回某一项首次出现的位置
insert:从表的某个位置插入某个元素
remove:从表的某个位置删除某个元素
findKth:返回(作为参数而被指定的)某个位置上的元素
三、实现
1. 表的简单数组实现
1)扩容
用双倍的容量创建一个不同的数组
int[] arr = new int[10];
// ...
// 下面我们决定要扩大arr
int[] newArr = new int[arr.length*2];
for(int i = 0 ; i < arr.length ; i++) {
newArr[i] = arr[i];
}
arr = newArr;
需要对表的大小进行估计
2)时间
printList:线性时间
findKth:常数时间
insert,remove:昂贵开销,最坏情况O(N)
2. 表的链表(linked list)实现
1)