C语言学习笔记—链表(四)链表的删除

C语言之删除链表指定的结点与修改链表指定结点 这一节讲链表增删改查中的改跟删 1.删除链表中元素 例子:1->2->3->4->5 删除也分两种情况,一种是否是删除头结点,二是正常删除链表的结点。 (1)删除头结点(切记,链表无论是插入还是修改还是删除,一旦动了头结点一定要返回一个新的头结点); struct Test* point = head; if(point->data == data) { head = head->next; free(point);//其实这里要有个free的,但是这是静 阅读详情

在这里插入图片描述

删除节点

链表的节点删除有两种情况
一、删除头节点
将头结点变为第二个节点即可。
在这里插入图片描述
二、删除非头节点
将要删除的节点的前一个节点指向到要删除的节点的下一个节点。
在这里插入图片描述

#include <stdio.h>
//定义结构体
struct Test 
{
	int data;
	struct Test *next;//链表有一个指向自己的指针
};
//输出链表数据
void printLink(struct Test *head)
{
	struct Test *piont = head;
	while(piont != NULL){
		printf("%d ",piont->data);
		piont = piont->next;
	}
	putchar('\n');
}
struct Test *delLinkNode(struct Test *head,int data)
{
	struct Test *point = head;
	if(point->data == data){
		head = head->next;
		printf("deletet succeed!\n");
		return head;
	}
	while(point->next != NULL){
		if(point->next->data == data){
			point->next = point->next->next;	
			
			printf("deletet succeed!\n");
			return head;
		}
		//跳到下一节点
		point = point->next;
	}
	printf("delete faulat!\n");
	return head;
}

int main()
{
	
	//定义结构体变量
	struct Test *head = NULL;
	struct Test t1 = {1,NULL};
	struct Test t2 = {2,NULL};
	struct Test t3 = {3,NULL};
	struct Test t4 = {4,NULL};
	struct Test t5 = {5,NULL};
	struct Test new = {100,NULL};
	//指向对应节点地址形成链表
	t1.next = &t2;
	t2.next = &t3;
	t3.next = &t4;
	t4.next = &t5;
	head = &t1;
	//输出
	printLink(head);

	
	head = delLinkNode(head, 1);
	printLink(head);
	
	
	head = delLinkNode(head, 3);
	printLink(head);

	return 0;
}

执行结果:
在这里插入图片描述

c语言单链表的创建、插入、删除 由于之前的下位机开发要求比较低,很少使用链表,后来换了份工作,跟另外一个同事共同开发一个主控程序,链表成为了最基本的数据结构,所以花了一段时间对链表进行了比较认真的学习,以下内容为个人对链表的一些理解。 1:链表的结构 链标的单位为节点,节点包含数据及指向下一个节点的地址。 2:链表的创建 将各个节点按上图的结构串联在一起 3:链表的插入 4、删除一个节点 5 阅读详情

相关推荐

【C语言学习笔记】算法篇——栈、队列、链表

#学习资料:《啊哈!算法》、《算法图解》 队列 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 生活实例:排队买票 原则:FIFO 用处:广度优先搜索以及队列优化的BELLMAN-FORD最短算法的核心数据结构 代码展示(取自啊哈!算法中的解密) #include <stdio.h> int main() { int

z 486

单链表的结点删除并返回删除的值C语言数据结构

**单链表的结点删除并返回删除的值C语言数据结构 每一句基本上都有注释,如还有哪些细节不懂,欢迎下方评论 **```c #include<stdio.h> #include<stdlib.h> #define NULL 0 //创建单链表结构体 typedef struct LNode{ int data; //表示结点的数据域 struct LNode * next; //表示结点的指针域 }LNode,*LinkList; //声明ADT LinkList Init

qq_44208167的博客 2105

Blender软件导出地形到Gazebo中

Blender软件导出地形到Gazebo中,并配置纹理、刚度、高度。

m0_70652514的博客 3376

C语言链表基础自学笔记

为了复试开始复习C语言的一些编程技巧,今天复习C链表。 1.链表的结构体 typedef struct node{ int data; struct node* next; }Node; 2.创建一个有n的节点的链表 Node *LinkCreate(int n) { Node *head,*end,*s; int i; head = end= (Node*)malloc(s...

枫林晚 685

自动驾驶IDM与MOBIL模型

IDM模型,自动驾驶

不想学好数学的汽车工程师不是一个好的程序员 1万+

从Live2D到Unreal Engine:2D与3D虚拟数字人核心技术实现路径解析

本文深入解析了从Live2D到Unreal Engine的2D与3D虚拟数字人核心技术实现路径,涵盖技术选型、制作流程与优化技巧。通过对比2D骨骼动画与3D建模渲染的差异,结合实战案例,帮助开发者根据项目需求选择合适方案,提升虚拟数字人的交互体验与视觉效果。

weixin_30379531的博客 149

数据结构--链表题六--删除链表的节点(leetcode--剑指 Offer 18)

今天偷个懒 题目描述: 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 示例 1: 输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9. 示例 2: 输入: head = [4,5,1,9], val = 1 输出: [4,5,9] 解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表

zstu_zhoubenshan的博客 651

安卓7.0+抓包难题:雷电模拟器9.0+Charles系统证书安装全攻略

HTTPS协议通过SSL/TLS加密保障网络通信安全,其核心机制依赖于证书信任链。在Android系统中,自7.0版本起,谷歌收紧了证书信任策略,默认仅信任系统预置的CA证书,这直接导致了传统抓包方法失效。理解这一原理对于移动开发、测试及安全研究至关重要,它揭示了应用层安全策略与系统底层机制的关联。通过将用户证书安装至系统信任区,可以突破此限制,实现HTTPS流量的解密与分析。这一技术在App调试、接口测试、安全审计等场景中具有广泛的应用价值。本文以雷电模拟器9.0和Charles抓包工具为例,详细演示了如

weixin_42521843的博客 280

数据结构之单链表删除第i个元素并用e返回其值的算法

数据结构之单链表区第i个元素的算法算法思路:1.声明一个结点p指向第一个结点,初始化j从1开始2.当j<i时就遍历链表,让p的指针向后移动,不断指向下一个结点,j累加13.若到链表末尾p为空,则说明第i个元素不存在4.否则查找成功,将欲删除的结点p->pNext赋值给q5.将q结点数据赋给e6.释放q结点7.返回成功单链表的数据结构:typede...

weixin_33894640的博客 4333

Spring Boot整合Apache Hop 2.3.0实战:从零搭建数据管道(附完整代码)

本文详细介绍了如何在Spring Boot项目中整合Apache Hop 2.3.0,从零开始构建可嵌入的数据管道。内容涵盖环境初始化、依赖配置、管道设计,并通过完整代码示例演示了如何通过REST API触发执行,实现数据同步与ETL流程的自动化管理,为微服务架构提供灵活的数据集成方案。

web99的专栏 632

Trae辅助开发完全教程:从入门到企业级实战

《Trae AI IDE完全教程》系统介绍了这款AI驱动的下一代集成开发环境。教程从基础入门到实战应用,详细讲解了Trae的双重开发模式(IDE/SOLO)、智能编程助手CUE、行内对话、模型管理等核心功能。内容包括环境配置、项目创建、Python开发示例,以及RPC框架和iOS应用两个实战案例。Trae通过深度整合AI技术,显著提升编码效率,支持多种编程语言和主流模型,适合从新手到企业级开发者的不同需求。本教程帮助开发者快速掌握Trae的使用技巧,实现AI辅助下的高效编程。

MrLi的博客 764

【剑指Offer】链表-删除链表的节点(经典题型)

题目: 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9. 示例 2: 输入: head = [4,5,1,9], val = 1 输出: [4,5,9] 解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的

码农研究僧的博客 260

Claude Code 完全指南:从入门到精通

《AI编程助手ClaudeCode深度指南》摘要 ClaudeCode作为新一代AI编程助手,凭借200K tokens的超长上下文窗口和深度代码理解能力,正在重塑开发工作流程。本文系统介绍了从安装配置到高级应用的完整使用指南: 核心优势包括: 项目级代码理解能力 Agent自主规划复杂任务 原生终端集成支持 多文件协同编辑功能 实战应用场景: 快速理解陌生项目架构 诊断性能瓶颈并提供优化方案 自动生成符合规范的API代码 开发可复用技术组件 高级技巧: 通过CLAUDE.md定义项目规范 合理使用/cle

分享AI、区块链技术及应用,未来已来 603

C语言学习笔记——链表

C语言学习笔记 链表 创建链表 链表是什么: 其实是多个结构体,里面存有数据和指针,其中上一个结构体的指针成员指向了下一个结构体,如此往复,就可以实现链表。 如果我们想在链表后面加入新的内容,只需要再创建(malloc)一个节点,并使之前尾部的节点中的指针指向他。 链表可以分为两种:有空头和无空头,有空头也就是第一个节点使不储存数据的,其他节点都接在他的后面,无空头的链表第一个节点存有数据...

qq_39079631的博客 829

8、水力压裂引起的地质材料力学性质变化的可视化研究

本研究探讨了水力压裂引起的地质材料力学性质变化的可视化方法。利用超声剪切波形数据,通过短时傅里叶变换(STFT)和主成分分析(PCA)进行特征提取和降维,并应用K-means聚类、凝聚聚类和DBSCAN等无监督学习方法对地质力学变化进行非侵入式可视化分析。研究比较了不同特征工程、聚类方法和降维策略对可视化效果的影响,并结合位移不连续性理论为聚类结果分配地质力学变化指数,以提高结果的物理解释性。最终,该方法成功实现了对水力压裂引起的岩石力学性质变化的高效、可靠可视化。

emacs5lisp的博客 109

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C语言学习记录(13)链表实验题目 && 有序链表

C语言学习记录 前言 一直自己没有学习做笔记的习惯,所以为了加强自己对知识的深入理解,决定将学习笔记写下来,希望向各位大牛们学习交流! 不当之处请斧正!在此感谢!这边就先从学习C语言写起,自己本身对程序语言方面不擅长,所以决定对此从基础开始学习, 大牛们对此文可以忽略! 学校OJ实验 链表实验题目 Problem Description 链表结点的结构定义为: struct node{ int ...

Hyena__的博客 1734

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【C语言篇】链表的基本操作-创建链表、插入节点、删除节点、打印链表

输入文件的第一行有两个整数n,q,分别表示初始链表中元素个数和对链表操作的次数,第二行有n个整数,表示初始链表的元素,保证这些数字不超过int表示的取值范围。接下来有q行数字,以1开头表示插入操作,以2开头表示删除操作。输出有1行,表示操作后的链表的所有结点的数据,数字间用一个半角空格间隔。💫3,在删除、插入函数中处理结点时要格外小心两个指针q和p循环结束后所指向的位置。2 a表示将链表中第a个元素删除,如果a大于当时链表长度,则忽略此操作。1 a b表示在第a个元素后面插入值为b的元素,

Yaoyao2024的博客 6162

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C语言链表的删除操作

C语言中链表的删除节点操作,超简单; 懂了之后修改和查找更不在话下

weixin_46726346的博客 5041

c语言删除链表中特定元素,单链表的删除某个元素的操作

昨天我们谈了关于单链表的插入操作,今天我们就来看看与插入操作对应的删除操作。前面了解了链表的插入,现在删除就简单了,因为是个反过程嘛。还是画个图容易理解一些。单链表删除第i个数据结点的算法思路:声明一结点p指向链表第一个结点,初始化j从1开始;当j < i时,就遍历链表,让p的指针向后移动,不断指向下一个结点,j累加 1;若到链表末尾p为空,则说明第i个元素不存在;否则査找成功,将欲删除的结...

weixin_35703897的博客 6074

【C语言】链表的删除与清除

首先,在删除节点前,要确保指针指向的节点有效,避免出现悬空指针。如,在释放节点内存后,应将指向该节点的指针设置为 NULL,防止意外访问已释放的内存。单向链表由节点组成,每个节点包含数据域和指向下一个节点的指针域——删除操作通常是指删除链表中的某个特定节点。在数据结构中,链表是一种常用且灵活的的数据组织方式,链表的删除操作是其基本操作之一。同时,可以在函数中添加必要的注释,说明函数的功能、参数和返回值,使代码更加清晰易懂。其次,在更新指针时,要确保操作的顺序正确,避免丢失链表中的节点。

📖在读学生📖 1447

C语言学习之链表

双向链表是一种链表结构,其中每个节点不仅包含指向下一个节点的指针 next,还包含指向前一个节点的指针 prev。链表的删除操作是指从链表中移除一个节点,并正确地更新链表结构,以确保链表的连续性。删除节点时,我们需要找到目标节点,并将其前一个节点的指针指向目标节点的下一个节点。查找的过程就是从链表头节点开始,逐个访问节点的数据,并与目标数据进行比较,直到找到相匹配的节点或到达链表的末尾。在双向链表中删除节点时,需要注意更新被删除节点的前后节点的指针。双向链表的插入操作根据插入位置不同,头部、尾部、中间。

zhaozhaoxiyang的博客 1511

C语言学习笔记——链表(单链表)

链表是什么呢,其实就是数据的一种存储方式。相对于线性存储,链表是链式存储。它不像数组,每个元素的物理地址是相邻的。链表中每个元素(通常称为节点)的地址是随机的。每当要添加新节点时,链表就要开辟新的空间。即有多少个节点,就开辟多少空间,不会造成空间浪费,这就是链表的优势所在。

唐学长的博客 1788

C语言实现单链表删除

C语言实现单链表删除所有与条件相符的结点 删除链表的结点指若某结点数据域的值满足给定的条件,则将该节点删除。 删除链表结点有两个原则: (1)删除操作不应该破坏原链接关系。 (2)删除结点前,应该有一个删除位置的查找子过程。 在删除一个结点时可能遇到以下三种情况: (1)链表为空。此时不用做任何操作,直接返回。 (2)链表头就是要删除的结点。这时先用一个指针q暂存此结点,再将链表头指向下一结点,最...

weixin_43484734的博客 3万+

C语言 链表笔记

笔者打算用C语言写一个贪吃蛇,但是还没有学习过链表,所以本文是笔者有关链表学习的笔记。学习链表前,需要掌握结构体和指针的知识参考的是一位大佬的文章C语言链表(单向,双向)//以下图片均来自这篇文章双向链表的大多数操作与单向链表相似,需要注意的是结束条件大多是!=phead而不是!=NULL,记住在操作一个结点是,一定先要用一个临时结点来存储要操作的这个结点continue~

Loving CS ~ 1649

c语言删除结点,C语言在链表中删除结点

/****************************************************************该程序实现结点的删除。其中void *del_node(TYM *head,int pos,int len)函数用于删除结点,head为需要删除结点的链表、pos为结点的位置、len为需要删除的长度。***********************************...

weixin_29821699的博客 3148

C语言学习--链表

C语言 链表习题 !.建立单链表,每个节点包括学号、姓名、性别、年龄和计算机成绩。实现按学号删除 链表中指定结点的功能。 2. 将 1 中建立的单向链表 a 分别拆成两个链表 b,c。b 中存放 80 分以上成绩的节点,c 中存放其他结点。 3. 将 1 中建立的单向链表 a 改为按计算机成绩递增排序的单向链表,并统计出高于平均 成绩的人数。 4. 输入新的结点,插入到 3 中的递增顺序的链表中。...

xqx_Zi_yu 1989
上一篇: C语言学习笔记—链表(三)链表的插入
下一篇: C语言学习笔记—链表(五)链表的动态创建
Akzeptieren
博客等级 码龄8年 65粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值