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

数据结构——单向链表部分操作及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.dtcms.com/a/314458.html

相关文章:

  • Exporters | 安装mongodb_exporter
  • 数据分页异步后台导出excel
  • 【Ubuntu】请问,`ip -a`显示的“wlo1”是什么呀?
  • 笔试——Day28
  • 如何在 Ubuntu 24.04 上安装和配置 TFTP 服务器
  • 高防服务器租用的作用都有哪些?
  • 上海交通大学联合项目论文解读 | Hume 模型:视觉 - 语言 - 动作模型中引入系统2思维
  • 单片机51 day46
  • 部署 Kibana 8.2.2 可视化管理 Elasticsearch 8.2.2 集群
  • 【测试工程思考】测试自动化基础能力建设
  • 机试备考笔记 4/31
  • Linux开发利器:探秘开源,构建高效——基础开发工具指南(下)【make/Makefile】
  • 笛卡尔坐标
  • 机器学习笔记:集成学习/模型融合
  • usr/bin/ld链接报错undefined reference `av_frame_free(AVFrame**)‘等ffmpeg库报错
  • 【Spark征服之路-4.5-Spark-Streaming核心编程(三)】
  • debian 时间同步 设置ntp服务端 客户端
  • FastAPI入门:中间件、CORS跨域资源共享、SQL数据库
  • 【笔记】ROS1|4 Turtlebot3仿真Waffle循线跟踪【旧文转载】
  • Linux 磁盘管理与分区配置
  • open-webui pipelines报404, ‘Filter pipeline.exporter not found‘
  • 【测试工程思考】云平台测试可重用性和场景覆盖度的平衡术
  • 遮天(太古篇)
  • windows内核研究(软件调试-软件断点)
  • [QMT量化交易小白入门]-七十六、从tick数据中获取高频交易的量价背离信号
  • Java开发时出现的问题---语言特性与基础机制陷阱
  • 使用AI IDE编程,如Cursor
  • 小迪安全v2023学习笔记(五十一讲)—— 持续更新中
  • Ubuntu 下编译 SQLCipher 4.8.0
  • yolo实现基于深度学习的龋齿检测系统pyqt