[C++] 销毁单向循环链表
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.单向循环链表的节点 2.单向循环链表的结构 二.双向循环链表 1.双向循环链表示意图 2.双向循环链表节点设计 3.双向循环链表的一般性结构 4.双向循环链表头插法插入 ...
- Day 62 数据结构(单向链表,单向循环链表,双向链表)
1. 单向链表的设计 例程:创建一个动态单向链表 1.定义链表结点:数据域+指针域 2.定义链表结构体:头结点指针+结点数 3.初始化链表 4.指定位置插入新数据 5.删除指定位置数据 6.获取链表长 ...
- node 获取表单数据 为空_数据结构与算法(python)单向循环链表
单向循环链表 单链表的一个变形是单向循环链表, 链表的最后一个节点的next域不再为None, 而是指向链表的头节点. 单向循环链表如图所示: 单向循环链表 同样单向循环链表也是要使用python来对 ...
- python之链表、单链表、双向链表、单向循环链表
python之链表.单链表.双向链表.单向循环链表 链表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时,又需要进行数据的搬迁,所以使用起来并非很灵活 链表结构可以充分利用计算机 ...
- 线性表—单向循环链表
开始没看单向循环链表,感觉应该很简单,但实际上有几个概念不是很清楚: 头结点,头指针,尾指针,尾节点??? [个人理解]:头结点就是一个链表中实际存储数据的那个节点的前一个节点,这个节点不存储数据,只 ...
- 从无到有算法养成篇-单向循环链表的常规操作
1.单向循环链表的创建 创建 tips: 由于存在两种情况: ① 第一次开始创建; ②已经创建,往里面新增数据 所以需要判断是否第一次创建链表 YES->创建一个新结点,并使得新结点的next ...
- Algorithms_基础数据结构(04)_线性表之链表_单向循环链表约瑟夫环问题
文章目录 大纲图 链表的经典面试题目 如何设计一个LRU缓存淘汰算法 约瑟夫问题 结构 分析 大纲图 链表的经典面试题目 如何设计一个LRU缓存淘汰算法 tip:单向链表 约瑟夫问题 N个人围成一圈, ...
- 算法—详细讲解单向循环链表的实现(python)
单向循环列表如图所示 单向循环链表的实现 一.往链表头部添加一个节点值为4 1.新增一个节点node=Node(4) 新建一个节点 node=Node(data)if self.is_empty(): ...
- 数据结构-单向循环链表、双向循环链表、仿真链表
一.单向循环链表: 1.概念: 单向循环链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针不再是结束标记,而是指向整个链表的第一个结点,从而使单链表形成一个环. 和单链表相比,循环单链表的 ...
最新文章
- Java_Path_01_路径问题
- password is not set 问题解决
- 504 Gateway Time-out错误的解决方法
- C++第9周(春)项目5 - 一元一次方程类
- Notification使用详解之三:通过服务更新进度通知在Activity中监听服务进度
- android经典的消费生产模式,生产消费者模式与Handler
- 峰Redis学习(7)Redis 之Keys 通用操作
- 12 个顶级 Bug 跟踪工具
- python中循环结构break_Python编程10:跳出循环结构之break和continue
- python内存注入代码,python语言编写的DLL注入工具
- logback 自定义PatternLayout
- 计算机系统中引入多道程序设计的目的在于,引入多道程序的目的在于什么
- 如何获得大学教材的PDF版本?
- 高分3号(GF-3)数据参数简介
- matlab 图像加密解密 代码,matlab图像加密解密
- Tensorflow Serving初体验
- chrome浏览器表单自动填充默认样式-autofill设置
- Redis启动、停止、查看
- 解决:Gitlab上出现“You won't be able to pull or push project code via SSH until you add an SSH key to you”
- 通过修改注册表写保护U盘