当前位置: 首页 > ops >正文

数据结构——单向链表部分操作及valgrind安装

        很多时候,由于忽略了对堆区空间的释放,会造成内存泄漏,所以在Ubuntu下linux有一个内存探测工具:valgrind

        步骤:

        1,虚拟机,设置,网络适配器,桥接模式,确定

        2,编辑,虚拟网络编译器,更改设置,VMnet0(没有就创一个),桥接到PC正在上网的网卡上,应用,确定

        3,配置网络文件:sudo vim/etc/network/interfaces,打开之后会有一串代码,只保留以下部分,剩下的用#注释掉

auto lo
iface lo inet loopbackauto ens33
iface ens33 inet dhcp

        4,重启网络服务:sudo/etc/init.d/networking restart

        5,ping www.baidu.com

        6(安装),sudo apt-get install valgrind

        7,对于部分虚拟机需要删除两个文件,会在安装时提示有文件锁上(lock),需要删除才能正常下载

        上图的意思就是内存泄漏的意思,只需在运行文件之前加上vilgrind即可

单向链表各种操作

查找链表的中间节点

        采用快慢指针法,定义两个结点指针, 快的指针速度是慢的指针速度的两倍,所以当快指针到达末尾时,慢指着则到达中间部分,如果是偶数则会多一层判断是否访问到不该访问的区域

        当然如果有clen(结点个数),只需循环clen/2次即可

查找链表倒数第K个结点

        倒数第k个结点,就是正数第clen - k + 1个结点,只需进行转化,按照普通的遍历即可

        没有结点个数时,依然采用快慢指针,快指针比慢指针多访问了K个结点,所以等到指针为空时,慢指针便访问到所求结点,图中由于i<n导致快指针少移了一次,所以在下一个while循环中指向最后一个节点而非空指针

链表逆序

        由于头插法最后顺序相反,所以逆序时再用一次头插法即可,从第二个结点开始一次头插,其中需要保留本结点地址以及下一结点的地址,故有两个指针 

排序

        首先判断该链表是否为空链表,若不是则进行下一步操作,从第二个结点开始,如果数值大于等于头节点,则向后排,直到排到比它小的,如果比头节点小,则进行头插法 

判断链表是否为环

        快慢指针法,如果不是环,则必定有NULL,如果是环的话,循环终止条件则是快指针等于慢指针时,此时快指针绕完环一定会和慢指针相等 

http://www.xdnf.cn/news/16995.html

相关文章:

  • 单片机裸机程序设计架构
  • webm 读取解析
  • 各种信号分解、模态分解方法合集【MATLAB实现】
  • 网络相关命令
  • TorchDynamo源码解析:从字节码拦截到性能优化的设计与实践
  • 复合机器人抓取精度怎么测量?
  • 8.4 打卡 DAY 33: 第一个神经网络 - MLP的构建与训练
  • usr/bin/ld链接报错undefined reference `av_frame_free(AVFrame**)‘等ffmpeg库报错
  • VAE学习笔记
  • Visual Studio Code的下载,安装
  • 机器学习(11):岭回归Ridge
  • iOS混淆工具有哪些?功能测试与质量保障兼顾的混淆策略
  • OpenLayers 入门指南【五】:Map 容器
  • C语言的数组与字符串
  • 力扣热题100——双指针
  • Hadoop MapReduce 3.3.4 讲解~
  • SpringBoot自动装配原理
  • 36.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--缓存Token
  • 编程算法:技术创新与业务增长的核心驱动力
  • IDA9.1使用技巧(安装、中文字符串显示、IDA MCP服务器详细部署和MCP API函数修改开发经验)
  • 电商直播流量爆发式增长,华为云分布式流量治理与算力调度服务的应用场景剖析
  • 构建属于自己的第一个 MCP 服务器:初学者教程
  • 从零认识OpenFlow
  • 学习游戏制作记录(角色属性和状态脚本)8.4
  • 【Linux指南】软件安装全解析:从源码到包管理器的进阶之路
  • AI鉴伪技术鉴赏:“看不见”的伪造痕迹如何被AI识破
  • Java项目:基于SSM框架实现的电子病历管理系统【ssm+B/S架构+源码+数据库+毕业论文+远程部署】
  • Git如何同步本地与远程仓库并解决冲突
  • 【iOS】渲染原理离屏渲染
  • 打造个人数字图书馆:LeaNote+cpolar如何成为你的私有化知识中枢?