C++ 销毁循环链表

今天在做合并2个单向循环链表的时候,下意识就像写非循环链表销毁函数一样写了如下销毁函数:

void List::Destory(List* &L){List* p = NULL;while(L){p = L;L = L->next;delete p;}
}

然后程序报错,因为即使L->next所指向的空间被删除,L->next的值也不会是空,不像非循环链表一样尾结点的next指针是空,所以while(L)会形成无限循环。
所以可以换个思路,把循环链表往非循环链表改,把循环链表拉直,这时候再利用和非循环链表同样的销毁办法就可以了,可以直接令头结点作为非循环链表的尾结点断开循环链表。

void List::Destory(List* &L){List *p = L->next; // 记录首元结点L->next = NULL; // 将头结点的next指针设置为空作为非循环链表的尾结点L = p; // 指针指向新链表的头结点while(L){p = L;L = L->next;delete p;}
}

代码成功运行!

[C++] 销毁单向循环链表相关推荐

  1. 【循环链表】数据结构——单向循环链表和双向循环链表操作笔记

    循环链表 一.单向循环链表 1.单向循环链表的节点 2.单向循环链表的结构 二.双向循环链表 1.双向循环链表示意图 2.双向循环链表节点设计 3.双向循环链表的一般性结构 4.双向循环链表头插法插入 ...

  2. Day 62 数据结构(单向链表,单向循环链表,双向链表)

    1. 单向链表的设计 例程:创建一个动态单向链表 1.定义链表结点:数据域+指针域 2.定义链表结构体:头结点指针+结点数 3.初始化链表 4.指定位置插入新数据 5.删除指定位置数据 6.获取链表长 ...

  3. node 获取表单数据 为空_数据结构与算法(python)单向循环链表

    单向循环链表 单链表的一个变形是单向循环链表, 链表的最后一个节点的next域不再为None, 而是指向链表的头节点. 单向循环链表如图所示: 单向循环链表 同样单向循环链表也是要使用python来对 ...

  4. python之链表、单链表、双向链表、单向循环链表

    python之链表.单链表.双向链表.单向循环链表 链表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时,又需要进行数据的搬迁,所以使用起来并非很灵活 链表结构可以充分利用计算机 ...

  5. 线性表—单向循环链表

    开始没看单向循环链表,感觉应该很简单,但实际上有几个概念不是很清楚: 头结点,头指针,尾指针,尾节点??? [个人理解]:头结点就是一个链表中实际存储数据的那个节点的前一个节点,这个节点不存储数据,只 ...

  6. 从无到有算法养成篇-单向循环链表的常规操作

    1.单向循环链表的创建 创建 tips: 由于存在两种情况: ① 第一次开始创建; ②已经创建,往里面新增数据 所以需要判断是否第一次创建链表 YES->创建一个新结点,并使得新结点的next ...

  7. Algorithms_基础数据结构(04)_线性表之链表_单向循环链表约瑟夫环问题

    文章目录 大纲图 链表的经典面试题目 如何设计一个LRU缓存淘汰算法 约瑟夫问题 结构 分析 大纲图 链表的经典面试题目 如何设计一个LRU缓存淘汰算法 tip:单向链表 约瑟夫问题 N个人围成一圈, ...

  8. 算法—详细讲解单向循环链表的实现(python)

    单向循环列表如图所示 单向循环链表的实现 一.往链表头部添加一个节点值为4 1.新增一个节点node=Node(4) 新建一个节点 node=Node(data)if self.is_empty(): ...

  9. 数据结构-单向循环链表、双向循环链表、仿真链表

    一.单向循环链表: 1.概念: 单向循环链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针不再是结束标记,而是指向整个链表的第一个结点,从而使单链表形成一个环. 和单链表相比,循环单链表的 ...

最新文章

  1. Java_Path_01_路径问题
  2. password is not set 问题解决
  3. 504 Gateway Time-out错误的解决方法
  4. C++第9周(春)项目5 - 一元一次方程类
  5. Notification使用详解之三:通过服务更新进度通知在Activity中监听服务进度
  6. android经典的消费生产模式,生产消费者模式与Handler
  7. 峰Redis学习(7)Redis 之Keys 通用操作
  8. 12 个顶级 Bug 跟踪工具
  9. python中循环结构break_Python编程10:跳出循环结构之break和continue
  10. python内存注入代码,python语言编写的DLL注入工具
  11. logback 自定义PatternLayout
  12. 计算机系统中引入多道程序设计的目的在于,引入多道程序的目的在于什么
  13. 如何获得大学教材的PDF版本?
  14. 高分3号(GF-3)数据参数简介
  15. matlab 图像加密解密 代码,matlab图像加密解密
  16. Tensorflow Serving初体验
  17. chrome浏览器表单自动填充默认样式-autofill设置
  18. Redis启动、停止、查看
  19. 解决:Gitlab上出现“You won't be able to pull or push project code via SSH until you add an SSH key to you”
  20. 通过修改注册表写保护U盘

热门文章

  1. 微软 workflow 工作流总结
  2. 数据挖掘教程:什么是数据挖掘?技术,工艺
  3. 疫情过后,雨过天晴(复工指南)
  4. java鬼吹灯搬山法杖_《鬼吹灯》:深度解析搬山鹧鸪哨,为寻找雮尘珠的悲惨人生...
  5. 高并发场景下JVM调优实践之路
  6. jpg怎么转换成png格式?四种转换方式试试看
  7. 解决Paragon NTFS for Mac安装分卷失败的办法
  8. R语言入门教程知识 第一章 R语言
  9. NODE_npm发布轮子
  10. Python + Selenium,分分钟搭建 Web 自动化测试框架!