请问这个子函数有什么问题呢?期待的功能是把链表的前m个结点挪到最后.为什么没有输出呢?
1条回答 默认 最新
- 抑郁的代码男孩 2023-12-18 17:38关注
模拟过程如下:
建议
前m个结点视为一个整体移动,而不是一个节点一个节点的移动,容易出错
还有针对单链表的插入删除元素,最好在表头前添加一个哑节点,方便在表头位置增删元素/* ** 定义哑节点 */ NODE* dummy = (NODE*)malloc(sizeof(NODE)); dummy->next = head; /* ** 找到表尾 */ NODE* tail = head; while (tail->next != NULL) { tail = tail->next; } /* ** 移动到第m个节点,从表头节点开始需要走m - 1次 */ NODE* p = head; for (int i = 1; i < m; ++i) { p = p->next; } head = p->next; // 前m个节点移到表尾,则第m + 1个节点就是新的表头,即p->next p->next = NULL; // 第m个节点应该是新表尾,即p tail->next = dummy->next; // 前m个节点链接到旧表尾节点 dummy->next = head; // 将新的表头节点链接到哑节点上
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
- ¥15 求高通平台Softsim调试经验
- ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
- ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
- ¥15 栅极驱动低侧烧毁MOSFET
- ¥30 写segy数据时出错3
- ¥100 linux下qt运行QCefView demo报错
- ¥50 F1C100S下的红外解码IR_RX驱动问题
- ¥20 基于matlab的航迹融合 航迹关联 航迹插补
- ¥15 用Matlab实现图中的光线追迹