已转到:http://www.iteblog.com/archives/166
一、概述
有时候我们需要设计这样一种数据结构:它能快速在要求位置插入或者删除一段数据。先考虑两种简单的数据结构:数组和链表。数组的优点是能够在O(1)的时间内找到所要执行操作的位置,但其缺点是无论是插入或删除都要移动之后的所有数据,复杂度是O(n)的。链表优点是能够在O(1)的时间内插入和删除一段数据,但缺点是在寻找操作位置时,却要遍历整个链表,复杂度同样时O(n)的。这两种数据结构各有优缺点,我们可以把数组和链表的优点结合来,这就构成了一个新的数据结构:块状链表,结合数组和链表的优缺点的块状链表其各种操作的时间复杂度均为O(sqrt(n))。
二、块状链表的各种操作
块状链表是结合了数组和链表的优缺点,块状链表本身是一个链表,但是链表储存的并不是一般的数据,而是由这些数据组成的顺序表。每一个块状链表的节点,也就是顺序表,可以被叫做一个块。块状链表通过使用可变