hashTabl数据结构,哈希表

易语言 2020-04-01 10:31:29

hashTabl数据结构,哈希表

pnewArr = newArr.resize (count + 1) ' 重新分配一个比当前容器数量大的数组,这个方法是从质数数组找下一个成员
newCount = newArr.length ()
oldArr.Attach (poldArr)
len = oldArr.length ()
i = 0
.计次循环首 (len, i)
list.Attach (oldArr.at (i, )) ' 逐个取出旧数组成员的链表
listCount = list.length ()
.计次循环首 (listCount, n) ' 逐个把链表里的数据加入到新数组链表里
pData = list.current () ' 从当前节点开始遍历
.如果真 (pData ≠ 0)
index = call_1 (hashFun, pData + 4)
index = index % newCount + 1 ' 当前数据在新数组中的下标
pnewList = newArr.at (index, ) ' 取出新数组中存放的链表指针
.如果真 (pnewList = 0) ' 如果为0, 则需要创建一个
pnewList = newList.init ()
newArr.at (index, pnewList) ' 为新数组成员分配链表
.如果真结束
newList.Attach (pnewList) ' 附加, 操作这个链表
newList.insert (pData) ' 直接把旧链表的数据加入新链表, 不需要重新申请空间
newList.Attach (0) ' 清空, 免得下一次 init() 时取到的是这个链表的指针
.如果真结束
list.next ()
.计次循环尾 ()
list.free () ' 释放旧链表
.计次循环尾 ()