C++ BucketList与Node类构造函数初始化实现问题求助
构造函数实现思路
首先你需要先在BucketList类的private块补充两个必要成员变量,用来跟踪当前元素总数和桶数组容量:
private: Node** buckets_; // 原有成员 int size_; // 存储当前已插入的字符串总数 int capacity_; // 存储当前桶数组的容量
1. Node类构造与析构实现
Node作为链表节点,构造时仅需要初始化自身成员为默认值即可,内存管理由BucketList统一负责:
Node::Node() { next_ = nullptr; // s_是string类型,会自动调用默认构造初始化为空串,不需要额外赋值 } Node::~Node() { // 不需要手动释放next_的内存,避免递归释放导致重复析构,BucketList析构会逐节点回收 }
2. BucketList默认构造函数实现
默认构造需要初始化空的哈希桶数组,容量为预设的INITIAL_CAP:
BucketList::BucketList() { capacity_ = INITIAL_CAP; size_ = 0; // 申请容量为capacity_的Node指针数组 buckets_ = new Node*[capacity_]; // 所有桶初始化为空指针(代表空链表) for (int i = 0; i < capacity_; ++i) { buckets_[i] = nullptr; } }
额外提示
你给出的contains函数示例里,取模用的是固定的INITIAL_CAP,后续实现扩容逻辑后这里需要改为取模当前的capacity_,否则会出现数组越界问题:
// 修改后的哈希取模逻辑 int hc = h(s) % capacity_;
内容的提问来源于stack exchange,提问作者Asad Kareem
相关产品推荐
相关产品推荐

