29 Star 407 Fork 125

cyberdash/数据结构(C++模板实现)

应该是TData curDtata;

已完成
创建于  
2024-03-11 20:46

LinearList/src/seq_list.h 的 578行

评论 (15)

黄彬彬 创建了任务 1年前
7378906 y dash 1613530412 Y_Dash 拥有者 1年前

嗯,谢谢指出错误,错还不少。。。内存没重新分配就赋值了 ,看了下代码2021年写的,2023年5月修过格式和注释,看来当时没仔细看。这两天找时间好好改改。留个邮箱吧朋友,给你加readme感谢名单里

元哥
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_

7378906 y dash 1613530412 Y_Dash 拥有者
回复 黄彬彬
1年前

你上边说的3个都是对的,我周末都改一下。谢谢你指出错误

7378906 y dash 1613530412 Y_Dash 拥有者
回复 黄彬彬
1年前

代码我修完了,你也加到readme感谢名单了,还拍了个抖音解释了一下,你再看看这几个问题,如果没问题的话这个issue我就改状态了哈

Y_Dash 任务状态待办的 修改为已完成 1年前
Y_Dash 任务状态已完成 修改为进行中 1年前

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; }

7378906 y dash 1613530412 Y_Dash 拥有者
回复 黄彬彬
1年前

抱歉刚看到,const这个太多函数缺了,嗯我去补上,Remove函数我回头看看,我比较忙一般就晚上或者周末才有时间改代码,不过我会第一时间修

请元哥指点一下
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;
}
}

7378906 y dash 1613530412 Y_Dash 拥有者
回复 黄彬彬
1年前

1 循环单链表删除函数
你是指删除最后一个结点的情况,测试代码circular_singly_linked_list_test.h:187行就是删除最后一个结点的case。我实现的循环链表,跟单链表双链表有head_和tail_不太一样,我的循环链表的每个结点都是数据结点,所以我的命名是first_和last_,这样能保证操作上最后一个结点的下一结点依然是数据结点

2 静态链表插入函数的变量命名
确实如你所说,我应该改一下变量命名,把pos改成prev_pos

3 静态链表GetInsertionIndex_函数是否应该增加扩容
这里不应该增加这个功能,因为这是一个纯粹读的函数,而扩容是写性质的操作,GetInsertionIndex_作为一个基础函数被很多函数调用,因此不应该包含它

4 静态链表析构函数
你写的可以的,提醒了我的好多析构函数都没判断NULL,哈哈哈哈

哈哈哈哈,学到了,感谢元哥指导

7378906 y dash 1613530412 Y_Dash 拥有者
回复 黄彬彬
1年前

linked_queue.h中析构函数按照执行步骤,最后貌似并没有把this->rear_置为空诶。

7378906 y dash 1613530412 Y_Dash 拥有者
回复 黄彬彬
1年前

嗯,当时是考虑到那块是析构函数的最后一步,之后的那些指针变量也都不存在了,就没有做置NULL,不过加上确实严肃一些。

Y_Dash 任务状态进行中 修改为已完成 11个月前

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
7378906 y dash 1613530412 黄彬彬-huang-binbin369
C++
1
https://gitee.com/cyberdash/data-structures-cpp.git
git@gitee.com:cyberdash/data-structures-cpp.git
cyberdash
data-structures-cpp
数据结构(C++模板实现)

搜索帮助