循环单链表的销毁操作

2023-11-09

循环单链表销毁的时候,我的代码开始是这样子的

Status DestroyList_L(LinkList& L)//销毁链表
{
    Lnode* p;
 
    while (L)
    {
        p = L;
        L = L->next;
        delete p;

    }

    return OK;
}

不出意外的报错了,然后我考虑了一下原因,因为我只进行了初始化操作,所以此时这个循环单链表是空的,他的头结点的指针域指向他自己,所以其实也是释放了L的空间

然后进行下一次while循环就引发异常了,所以我考虑了一下怎么避免这个问题,然后突然想到

"我把循环单链表断链不就能当成单链表处理了吗?"

一语惊醒梦中人,但是这个时候,我对于循环单链表的理解还是不够,我想的是如下

Status DestroyList_L(LinkList& L)//销毁链表
{
    Lnode* p,*m;
    //我先找到它的最后一个结点
    p=m = L;
    while (p->next!=m)
    {
        p = p->next;
    }
    //这样子就是找到了最后一个结点
    //然后赋值为null,完美!
    p->next = NULL;
    while (L)
    {
        p = L;
        L = L->next;
        delete p;

    }

    return OK;
}

我的做法是用两个指针指向首元结点,其中一个就一直向后走直到他的next域指向首元结点,这个时候循环单链表遍历完一轮,然后现在断链,把此时的结点的next置空

然后就跟单链表的销毁一模一样了

但是我上网搜索别人的做法的时候发现了这篇博客icon-default.png?t=M276https://blog.csdn.net/qq_42957923/article/details/84970670

的实现方式,发现我多做了无用功,循环单链表的是个循环,或者说的通俗一些,他是个圈儿啊.它可以在任何地方断开啊

所以我修改我的代码如下

Status DestroyList_L(LinkList& L)//销毁链表
{
    Lnode* p;
    //我先找到它的最后一个结点
    p= L->next;
    L->next = NULL;
    L = p;
    while (L)
    {
        p = L;
        L = L->next;
        delete p;

    }

    return OK;
}

1.不为空

其中的三步操作就是让p指向首元结点,然后头结点的next域置空,然后让L指向首元结点,就是在

2.空

就单纯首元结点的指针域置空了,然后循环的时候不是垃圾值而是NULL,就不会引发异常了.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

循环单链表的销毁操作 的相关文章

随机推荐

  • Unity Xbox360 Input

    1 资料收集 2 Unity中增加键值注册 3 A键值 4 B键值 5 X键值 6 Y键值 7 LeftBumper 键值
  • 思考卷积神经网络(CNN)中各种意义

    只是知道CNN是不够 我们需要对其进行解剖 继而分析不同部件存在的意义 CNN的目的 简单来说 CNN的目的是以一定的模型对事物进行特征提取 而后根据特征对该事物进行分类 识别 预测或决策等 在这个过程里 最重要的步骤在于特征提取 即如何提
  • AltiumDesigner 绘制PCB常见问题

    1 普通过孔16mil 24mil 2 PCB双层板看到上面有大量的过孔 很多都没有用到的 这些过孔有什么用啊 答 通过大量过孔连接顶层和底层的铺铜 也就是将顶层和底层的 地 良好的连接 为接地点提供更多回路 以提高整个电路板的抗干扰能力
  • Rpm相关操作

    安装rpm包 rpm ivh your package rpm 安装过程中可能出现下面的警告或者提示 conflict with 可能是要安装的包里有一些文件可能会覆盖现有的文件 缺省时这样的情况下是无法正确安装的 强制安装即可 rpm f
  • 《数据结构与算法》实验:排序算法实验比较——选择排序 & 堆排序

    数据结构与算法 实验和课程Github资源 数据结构与算法 实验 线性结构及其应用 算术表达式求值 数据结构与算法 实验 树型结构的建立与遍历 数据结构与算法 实验 图结构的建立与搜索 数据结构与算法 实验 查找结构的实验比较 二叉查找树B
  • 同步通讯和异步通讯(简单理解)

    同步通信和异步通信 简单理解 注 本篇文章只是告诉你什么是同步通信 什么是异步通信 即使没有计算机基础的同学也适合阅读 同时也能帮助计算机专业同学更好理解这个知识点 但是如果想深入学习 还需自己翻阅资料 一 电脑完成一个读命令需要的步骤 主
  • ​Qt for Python 入门¶​

    本页重点介绍如何从源代码构建Qt for Python 如果你只想安装PySide2 与你需要运行 pip pip install pyside2 有关更多详细信息 请参阅我们的快速入门指南 此外 您可以 查看与项目相关的常见问题解答 一般
  • 【猿人学WEB题目专解】猿人学第17题

    据说 看我文章时 关注 点赞 收藏 的 帅哥美女们 心情都会不自觉的好起来 前言 作者简介 大家好我是 user from future 意思是 来自未来的用户 寓意着未来的自己一定很棒 个人主页 点我直达 在这里肯定能找到你想要的 专栏介
  • C#socket编程——TCP协议创建服务器端和客户端并进行通信

    我们做网络通信的时候需要有通信协议 在进行socket编程的时候有两种通信协议TCP UDP 这次我们就用简单的方式在一台电脑建立TCP协议的服务器端和客户端并使之进行通信 服务器端和客户端进行连接 第一步就行在服务器端创建一个socket
  • 白名单限制

    白名单是设置可以通过的用户 其他用户不可以通过 黑名单是设置不可以通过的用户 其他用户可以通过 常用的白名单限制 数据库使用白名单限制 rds数据库在阿里云设置能够访问的IP白名单 MySQL设置白名单 1 登录mysql mysql h
  • Vue 3-计算属性的getter,setter

  • Docker Alpine安装oracle客户端

    Docker Alpine安装oracle客户端 进入docker容器 docker run it name 容器名 镜像名 latest bin sh 由镜像创建容器并进入 只有镜像无容器 或 docker exec it 容器名 bin
  • Linux ——实操篇

    Linux 实操篇 前言 vi 和 vim 的基本介绍 vi和vim常用的三种模式 正常模式 插入模式 命令行模式 vi和vim基本使用 各种模式的相互切换 vi和vim快捷键 关机 重启命令 基本介绍 注意细节 用户登录和注销 基本介绍
  • 134. 加油站

    Powered by NEFU AB IN Link 文章目录 134 加油站 题意 思路 代码 134 加油站 题意 在一条环路上有 n 个加油站 其中第 i 个加油站有汽油 gas i 升 你有一辆油箱容量无限的的汽车 从第 i 个加油
  • ElasticSearch8.8 Docker local安装(一)

    ES ElasticSearch 的安装教程网上比较多 但是基本都是8 0以前版本 8 0以后的版本主要默认支持https加密了 连接上有一些不太一样 尤其用java连接的时候 因此再做一个报告避免一些坑 前提linux操作系统 我使用虚拟
  • SQL Server2008下载地址

    SQL Server2008下载地址 https www microsoft com zh CN download details aspx id 30438 版本说明 Microsoft SQL Server 2008 R2 Expres
  • HyperLedger Fabric 实战入门第一天

    2019独角兽企业重金招聘Python工程师标准 gt gt gt HyperLedger Fabric 实战入门 先实践后理论 第一步 初始化开发环境 参考官方文档 http hyperledger fabric readthedocs
  • 【深度学习基础】准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure

    深度学习基础 性能评估指标 超参数介绍 这里主要解释的是前四个 先给出百度百科定义 召回率 Recall Rate 也叫查全率 是检索出的相关文档数和文档库中所有的相关文档数的比率 衡量的是检索系统的查全率 精度是检索出的相关文档数与检索出
  • 腾达宽带连接服务器无响应,腾达(Tenda)无线路由器192.168.0.1打不开问题解决方法图文教程...

    本文介绍了腾达 Tenda 无线路由器192 168 0 1 打不开的解决办法 192 168 0 1是腾达无线路由器的设置网址 在浏览器中无法打开192 168 0 1登录页面 请参考下面的解决办法 方法一 正确设置电脑IP地址 这里以W
  • 循环单链表的销毁操作

    循环单链表销毁的时候 我的代码开始是这样子的 Status DestroyList L LinkList L 销毁链表 Lnode p while L p L L L gt next delete p return OK 不出意外的报错了