【数据结构】散列表
发布时间:2021-03-31 05:30:31 所属栏目:安全 来源:网络整理
导读:? ? ??散列表是典型的以空间换取时间的数据结构;它在插入、删除、查找操作上也具有常数平均时间的表现,但是 这种表现是以统计为基础的 ; 基本知识 (1) 负载系数, 指元素的个数除以表格大小, 除非采用开链法(拉链法),否则负载系数应该在0~1之间;
删除元素//删除所有与节点键值相同的元素
template <class V,A>::size_type
hashtable<V,A>::erase(const key_type& key)
{
const size_type n = bkt_num_key(key); //找到插入位置
node* first = buckets[n]; //第一个元素的指针
size_type erased = 0;
if (first) {
node* cur = first; //当前指针,首指针先跳过
node* next = cur->next; //下一个指针
while (next) { //下一个元素和key来比
if (equals(get_key(next->val),key)) { //节点的键值相同
cur->next = next->next; //先改变当前指针的指向
delete_node(next); //删除
next = cur->next; //next
++erased;
--num_elements;
}
else {
cur = next;
next = cur->next;
}
}
if (equals(get_key(first->val),key)) { //若首指针也相同,也要删除
buckets[n] = first->next; //buckets指向下一个
delete_node(first); //删除
++erased;
--num_elements;
}
}
return erased;
}
(编辑:清远站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

