HEIMIIY 2018-07-02 11:57 采纳率: 0%
浏览 1925
已采纳

单链表删除 清空链表过程注释

void List::ClearList(){//清空链表
Node *currentNode=m_pList->next;
while(currentNode!=NULL)/
{
Node *temp=currentNode->next;
delete currentNode;
currentNode=temp;
}
m_pList->next=NULL;

        m_pList->data=0;//这个的含义是表头数据为0吗
  • 写回答

2条回答

  • threenewbee 2018-07-02 12:46
    关注

    你这个代码的实现的方式是
    从链表的头开始,往后,temp保存的是待删除的节点后一个节点,而currentNode是待删除的节点,每次释放currentNode,而让temp成为新的currentNode(让temp的下一个节点成为temp)
    最后是清理头节点(让它的数据域data=0,指针域next\null)

    这个代码其实有两个问题,第一,头节点也是普通节点,那么头节点的 data = 0,说明它是空的么?还是只有一个节点,并且这个节点的数据是0呢?没法区别。解决办法是,引入一个没有数据域的头指针,比如叫header。
    第二个问题,一旦循环删除失败,那么完蛋了,从失败开始往后的内存全部泄露了。解决办法是从后往前删除。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图