当前位置: 首页 > 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.lryc.cn/news/610481.html

相关文章:

  • 网络资源模板--基于Android Studio 实现的消消乐游戏
  • 机器学习05——正则化与逻辑回归
  • Linux Epool的作用
  • ssh连接VirtualBox中的Ubuntu24.04(win11、putty、NAT 模式)
  • Redis真的是单线程的吗?
  • (五)系统可靠性设计
  • 深度残差网络ResNet结构
  • 网络相关命令
  • 30天入门Python(基础篇)——第31天:标准库学习之re模块
  • 【BUUCTF系列】[SUCTF 2019]EasySQL1
  • Linux开发利器:探秘开源,构建高效——基础开发工具指南(下)【make/Makefile】
  • 单向链表练习
  • TCP 协议的“无消息边界”(No Message Boundaries)特性
  • Java 的 APT(Annotation Processing Tool)机制详解
  • 区块链 和 一致性哈希的结合
  • SpringBoot+SpringMVC常用注解
  • 可视化图解算法57:字符串的排列
  • 简要探讨大型语言模型(LLMs)的发展历史
  • AI编程助手:终结996的新希望
  • [激光原理与应用-134]:光学器件 - 图解透镜原理和元件
  • 实现三通道转单通道(灰度图)的两种加权方法
  • Pixel 4D 3.4.4.0 | 支持丰富的壁纸资源,高清画质,高度的个性化设置能力,智能推荐功能
  • Coze Loop:开源智能体自动化流程编排平台原理与实践
  • 可重复读(Repeatable Read)能解决幻读吗?
  • 【unitrix】 7.1 二进制位加法(bit_add.rs)
  • Minio部署和客户端使用 - 版本 2025-05-24T17-08-30Z
  • 县级融媒体中心备份与恢复策略(精简版3-2-1架构)
  • Javascript面试题及详细答案150道(046-060)
  • Linux 交换空间管理
  • 15个命令上手Linux!