LinearList/src/seq_list.h 的 578行
嗯,谢谢指出错误,错还不少。。。内存没重新分配就赋值了
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
元哥
LinearList/src/singly_linked_list.h 73行
LinkedNode* Search(TData data);
写成 LinkedNode* Search(const TData& data) const; 是不是更规范一些呢? 还是说意义不大
你好,元哥!
LinearList/src/doubly_linked_list.h 中 495行 按照后面for循环的逻辑,是不是应该改为DoublyLinkedNode* cur = this->head_->next;呢?
LinearList/src/doubly_linked_list.h中的析构函数,按照执行流程,只是把中间的数据节点都释放掉了,但最后并没有delete掉head_和tail_
1:
CircularSinglyLinkedNode* Search(const TData& data);
改为CircularSinglyLinkedNode* Search(const TData& data) const;
2:
CircularSinglyLinkedNode* GetNode(int pos);
改为CircularSinglyLinkedNode* GetNode(int pos) const;
3:
bool CircularSinglyLinkedList::Remove(int target_pos, TData& data),删除函数这儿,是不是没有考虑到恰好删除尾节点的情况呢,需要更改this->last_。
再delete掉target_node前加上if(target_node == this->last_) ( this->last_ = prev_node; }
请元哥指点一下
1:LinearList/src/static_linked_list.h
插入函数(353行):bool res = GetIndexByPos_(pos, prev_index); 传进去的pos是在注释里写的是:“插入位置的前一位置”,但用的是Insert函数定义里的参数int pos ,其意思是需要插入位置的pos。那是不是应该改为 int prev_pos呢?或者bool res = GetIndexByPos_(pos - 1, prev_index)
2:GetInsertionIndex_函数中,if (length_ == capacity_) {return false;}可以在这里调用扩容吗?这样就保证一定有可用空间了欸
3:析构函数可以直接写成这样吗?求指教
template
StaticLinkedList::~StaticLinkedList() {
if (this->mem_data_ != NULL) {
delete[] this->mem_data_;
this->mem_data_ = NULL;
}
}
1 循环单链表删除函数
你是指删除最后一个结点的情况,测试代码circular_singly_linked_list_test.h:187行就是删除最后一个结点的case。我实现的循环链表,跟单链表双链表有head_和tail_不太一样,我的循环链表的每个结点都是数据结点,所以我的命名是first_和last_,这样能保证操作上最后一个结点的下一结点依然是数据结点
2 静态链表插入函数的变量命名
确实如你所说,我应该改一下变量命名,把pos改成prev_pos
3 静态链表GetInsertionIndex_函数是否应该增加扩容
这里不应该增加这个功能,因为这是一个纯粹读的函数,而扩容是写性质的操作,GetInsertionIndex_作为一个基础函数被很多函数调用,因此不应该包含它
4 静态链表析构函数
你写的可以的,提醒了我的好多析构函数都没判断NULL,哈哈哈哈
linked_queue.h中析构函数按照执行步骤,最后貌似并没有把this->rear_置为空诶。
登录 后才可以发表评论