数据结构——表

一、概念

    形如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)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值