单链表(6)

news2024/11/15 13:42:42

删除第一个val的值(考试重点)

思路:例如删除val值为3的数据,直接让数据2的p->next指向数据4就可以了。

所以删除必须依赖前驱。也就是要写删除函数,则先要完成返回key的前驱地址的函数

也就是先知道前驱地址,然后让前驱的next指向要被删除的val数据的next,所以删除就是——穿透着删除,将300改成700

删除完后最重要的是要free,因为结点是malloc申请来的

*所以说插入一定是动态申请,否则函数外面的用不了。对应的删除必须要free。即在链表操作里,删除必有free

返回key的前驱地址的函数

Node*和List的使用区别:

这里用的是List

这里用的是Node*

其实Node*==List,也就是说在代码里将List换成Node*,或者把Node*换成List,代码是没有任何问题的。

这个的前提是结构体必须这么定义

就像这里的初始化

可以写List

也可以写Node*

但还是分开用的好

List多用来指向——完整个链表

如果要申请单个的某个结点,就用——Node*

所以许多时候plist跟List在一起,plist代表整个链表。p跟Node*在一起,p代表某个结点。

删除函数——删除链表plist中pos位置的值,删除跟插入一样成功或失败2种结果

穿透删除这样写,但这样写完后要怎么free

现在数据2的next变成了700,此时地址300的结点就不知道在哪儿了,找不到300在哪儿就已经造成内存泄漏了,然后也找不到问题所在了

所以这句删除就已经造成内存泄漏了(调用一次就少个结点,在不关机的服务器里面)

平时我们没出问题是因为我们的程序运行完就自动退出了,然后它的内存就自动回收了

所以要在删除它之前,把它标记一下,用q

后面就来释放这个q

现在来测试一下

获取key值的后继地址函数——返回key的后继地址,如果不存在(key无后继,在表尾)返回NULL

这个可以直接调用查找函数search

现在来测试一下

*只要写指针和指向符,就要断言不为空

只要写调用函数,就要先用一个值接收函数返回值,再if判断返回值结果

return 语句中有指向符,上面就要if判断

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1201500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录第五十一天 | 动态规划 买卖股票:含冷冻期 的多状态 买卖股票问题(309);包含手续费 的买卖股票问题(贪心,动态规划)(714)

1、含冷冻期 的多状态 买卖股票问题 1.1 leetcode 309:最佳买卖股票时机含冷冻期 第一遍代码 运用之前二维dp数组的方法,第二个维度大小为2,对应持有,不持有 dp[1][0] max(dp[0][0], -prices[1]);注意要考虑只有一天的情况 dp[…

Python---字典的增、删、改、查操作

字典的增操作 基本语法: 字典名称[key] value 注:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。 案例:定义一个空字典,然后添加name、age以及address这样的3个key # 1、定义一个空字典 person {…

阿里云国际站:密钥管理服务

文章目录 一、密钥管理服务的概念 二、密钥管理服务的功能 三、密钥管理服务的优势 一、密钥管理服务的概念 密钥管理服务KMS(Key Management Service)是您的一站式密钥管理和数据加密服务平台、一站式凭据安全管理平台,提供简单、可靠、…

creo之混合和扫描混合

案例一:杯子 步骤: 在top平面画一个草图圆角矩形: 然后形状–》混合 然后绘制新增的截面2: 用中心线将圆分割成八分,因为底部的圆角矩形是八份线段组成,所以我们要和他一样分成八份:先画中心线…

深入理解对象存储(OSD)

对象存储 1、对象存储的起源2、什么是对象存储3、对象存储与块存储、文件存储4、对象存储架构4.1、对象(Object)4.2、对象存储设备(OSD)4.3、元数据服务器(MDS)4.4、对象存储系统的客户端(Clien…

链表的逆置

方法1: 依次将指针反向,最后令头指针指向尾元素。 逆置过程如下: 当q指针为空时,循环结束。 //试写一算法,对单链表实现就地逆置, void Reverse1(List plist)//太复杂,不用掌握 {assert(plist ! NULL);i…

【计算机网络笔记】IP编址与有类IP地址

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

实验一 Anaconda安装和使用(上机Python程序设计实验指导书)

实验一 Anaconda安装和使用 一、实验目的和要求 (一)掌握Windows下Anaconda的安装和配置。 (二)掌握Windows下Anaconda的简单使用,包括IDLE、Jupyter Notebook、Spyder工具的使用。 (三)掌…

05-Spring中Bean的生命周期

Bean的生命周期 生命周期就是对象从创建开始到最终销毁的整个过程 , Spring其实就是一个管理Bean对象的工厂,它负责对象的创建和销毁等 Bean生命周期的管理可以参考Spring的源码:AbstractAutowireCapableBeanFactory类的doCreateBean()方法 研究生命周期的意义&am…

2023最新版本 从零基础入门C++与QT(学习笔记) -1- C++输入与输出

🎏说在前面 🎈我预计是使用两个月的时间玩转C与QT 🎈所以这是一篇学习笔记 🎈根据学习的效率可能提前完成学习,加油!!! 输入(代码如下方代码块) 🎄分析一下构成 🎈…

【可解释AI】Alibi explain: 解释机器学习模型的算法

Alibi explain: 解释机器学习模型的算法 可解释人工智能简介Alibi特点算法Library设计展望参考资料 今天介绍Alibi Explain,一个开源Python库,用于解释机器学习模型的预测(https://github.com/SeldonIO/alibi)。该库具有最先进的分类和回归模型可解释性算…

springboot项目基本配置

接口入口日志 参数校验 业务逻辑执行 异常捕获-统一异常处理 统一数据返回体 接口返回日志 使用的是springboot2.x版本。 Mybatisplus 官网地址&#xff1a;https://baomidou.com/ 导入依赖 <dependency><groupId>com.baomidou</groupId><artifactId&g…

【Opencv】cv::dnn::NMSBoxes()函数详解

本文通过原理和示例对cv::dnn::NMSBoxes&#xff08;&#xff09;进行解读&#xff0c;帮助大家理解和使用。 原理 cv::dnn::NMSBoxes是OpenCV库中的一个函数&#xff0c;用于在目标检测中处理多个预测框。在目标检测中&#xff0c;模型可能会为同一个物体生成多个预测框&…

Web开发:一键复制到剪切板功能实现思路

在很多网页页面中我们都使用到过一键复制内容到剪切板的小功能&#xff0c;那么&#xff0c;具体如何实现呢&#xff1f;下面来讲述基于原生JavaScript API的两种实现思路。 同步方式&#xff1a;document.execCommand 这种方式&#xff1a; ①优点&#xff1a;是最传统的方法…

Resources接口和实现类

Spring Resources概述 Java的标准iava.net.URL类和各种URL前缀的标准处理程序无法满足所有对low-evel资源的访问&#xff0c;比如: 没有标准化的URL实现可用于访问需要从类路径或相对于 ServletContext 获取的资源。并且缺少某些Spring所需要的功能&#xff0c;例如检测某资源…

Ps:RGB 颜色模式

Ps菜单&#xff1a;图像/模式/RGB 颜色 Image/Mode/RGB Color RGB 颜色模式 RGB Color Mode是数字图像捕捉、处理以及显示的最常用模式&#xff0c;也是 Photoshop 默认的工作模式。 RGB 是 Red&#xff08;红色&#xff09;、Green&#xff08;绿色&#xff09;、Blue&#xf…

node实战——koa实现文件下载和图片/pdf/视频预览(node后端储备知识)

文章目录 ⭐前言⭐koa-send库实现下载⭐mime-types库实现图片预览&#x1f496; 渲染图片&#x1f496;渲染404&#x1f496;预览pdf&#x1f496;预览视频 ⭐总结⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于node实战——koa实现文件下载和图片预览。…

数据结构----链式栈的操作

链式栈的定义其实和链表的定义是一样的&#xff0c;只不过在进行链式栈的操作时要遵循栈的规则----即“先进后出”。 1.链式栈的定义 typedef struct StackNode {SElemType data;struct StackNode *next; }StackNode,*LinkStack; 2.链式栈的初始化 Status InitStack(LinkSta…

06-解决Spirng中的循环依赖问题

Bean的循环依赖问题 循环依赖: A对象中有B属性 , B对象中有A属性(丈夫类Husband中有Wife的引用, 妻子类Wife中有Husband的引用) toString()方法重写时直接输出wife/husband会出现递归导致的栈内存溢出错误 直接输出wife/husband会调用它们的toString()方法, 在toString()方法…

Halcon WPF 开发学习笔记(3):WPF+Halcon初步开发

文章目录 前言在MainWindow.xaml里面导入Halcon命名空间WPF简单调用Halcon创建矩形简单调用导出脚本函数 前言 本章会简单讲解如何调用Halcon组件和接口&#xff0c;因为我们是进行混合开发模式。即核心脚本在平台调试&#xff0c;辅助脚本C#直接调用。 在MainWindow.xaml里面…