【数据结构】散列表
发布时间:2021-03-30 19:21:10 所属栏目:安全 来源:网络整理
导读:? ? ??散列表是典型的以空间换取时间的数据结构;它在插入、删除、查找操作上也具有常数平均时间的表现,但是 这种表现是以统计为基础的 ; 基本知识 (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; } (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |