【数据结构】散列表(3)
发布时间:2021-03-30 15:03 所属栏目:53 来源:网络整理
导读:删除元素 //删除所有与节点键值相同的元素template class V,A::size_type hashtableV,A::erase(const key_type key){ const size_type n = bkt_num_key(key); //找到插入位置 node* first = buckets[n]; //第一个元
删除元素//删除所有与节点键值相同的元素 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; } (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读