C语言 链表创建及操作

article/2025/9/14 13:04:22

C语言 链表创建及操作

  • 第一部分构建链表,定义结构体,分别用头插法、尾插法实现,这里封装了打印函数:printf();做练习方便后续使用;对链表进行查找,并将查找到的值构建一个新的链表;链表的转置;具体代码如下:
#include<stdio.h>
#include<stdlib.h>
struct node  //定义结构体
{int data;    struct node *next;
};
void print_data(struct node *inc)	//封装函数做打印用
{printf("data = %d\n",inc->data);
}
void traverse(struct node *inc, void(*print)(struct node *))	//遍历链表并打印
{while(inc){print(inc);inc = inc->next;}
}
void insertHead(struct node **inc, int n)		//头插法
{struct node *tmp = malloc(sizeof(struct node));tmp->data = n;tmp->next = *inc;*inc = tmp;
}
void insertTail(struct node **inc, int n)	//尾插法
{struct node *tmp = malloc(sizeof(struct node));tmp->data = n;tmp->next = NULL;while(*inc){inc = &(*inc)->next;}*inc = tmp;
}
struct node *findNode(struct node **inc, int goal)	 	//链表查找,并把查找到的值,存入新的链表中
{struct node *newlist = NULL;  //新的链表struct node *tmp = *inc;  //中间节点接收传入的值struct node *pre;  //上一个节点struct node *cur;  //当前节点while(tmp->next){if(goal == tmp->next->data){pre = tmp;cur = tmp->next;tmp->next = cur->next;cur->next = newlist;newlist = cur;}else if(goal == tmp->data){*inc = (*inc)->next;tmp->next = newlist;newlist = tmp;tmp = *inc;}else{tmp = tmp->next;}}return newlist;
}
void transNode(struct node **inc)
{struct node *cur = *inc;struct node *pre = NULL;struct ndoe *tmp;while(*inc){tmp = cur->next;cur->next = pre;pre = cur;cur = tmp;}*inc = pre;
}
int main()
{struct node *p = NULL;insertHead(&p,10);insertHead(&p,20);insertHead(&p,10);insertHead(&p,30);insertHead(&p,10);insertHead(&p,40);printf("_____create list_____\n");traverse(p,print_data);printf("_____old list_____\n");struct node *ret = findNode(&p, 10);traverse(p,print_data);printf("_____new list_____\n");traverse(ret,print_data);return 0;
}
  • 执行结果如下:
    在这里插入图片描述

http://chatgpt.dhexx.cn/article/Ckmr5ep7.shtml

相关文章

Netty权威指南 读书笔记

文档太大&#xff0c;PDF格式的存档已上传到百度网盘&#xff1a; 链接: https://pan.baidu.com/s/1QnUDWujGOXXCq5iWQBIRJg 提取码: q46s

Netty权威指南(第2版) pdf百度网盘下载

欢迎大家关注我的公众号【老周聊架构】&#xff0c;Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。 链接: https://pan.baidu.com/s/1DfxG9qKU2fshi6ha1a8NkA 提取码: bmt4

Netty权威指南带目录完整版.pdf

2019独角兽企业重金招聘Python工程师标准>>> Netty权威指南带目录完整版.pdf 转载于:https://my.oschina.net/xiaojianyu/blog/3011828

Netty权威指南总结(三)

五、Netty实战技巧&#xff1a; (一) 多线程编程实践&#xff1a; 1. Netty中使用多线程的技巧&#xff1a; 创建两个NioEventLoopGroup&#xff0c;用于逻辑隔离NIO Acceptor和NIO IO线程。 尽量不要在ChannelHandler中启动用户线程&#xff08;解码后用于将POJO消息派发到后端…

Netty权威指南(四)TCP粘包/拆包问题

TCP粘包/拆包问题解决之道 上一章一、介绍1.1 TCP粘包/拆包问题说明1.2 TCP粘包/拆包发生的原因1.3 粘包问题的解决策略 二、未考虑TCP粘包导致的功能异常案例2.1 TimeServerHandler的改造2.2 TimeClientHandler的改造2.3 运行 三、利用LineBasedFrameDecoder解决TCP粘包问题3.…

《Netty权威指南》

《Netty权威指南》 基本信息 作者&#xff1a; 李林锋 出版社&#xff1a;电子工业出版社 ISBN&#xff1a;9787121233432 上架时间&#xff1a;2014-5-29 出版日期&#xff1a;2014 年6月 开本&#xff1a;16开 页码&#xff1a;524 版次&#xff1a;1-1 所属分类&#xff…

Netty权威指南~第一章Java的I/O演进之路

本章内容如下&#xff1a; 5种网络I/O模型的介绍I/O多路复用的介绍 1、I/O基础入门 在Java1.4之前&#xff0c;Java对I/O的支持不完善&#xff0c;开发人员在开发高性能I/O的程序时&#xff0c;会面临以下问题&#xff1a; 没有数据缓冲区&#xff0c;I/O性能存在问题没有C…

Netty权威指南(第2版)

网站 更多书籍点击进入>> CiCi岛 下载 电子版仅供预览及学习交流使用&#xff0c;下载后请24小时内删除&#xff0c;支持正版&#xff0c;喜欢的请购买正版书籍 电子书下载(皮皮云盘-点击“普通下载”)购买正版 封页 编辑推荐 1、Hadoop、Storm、Spark、Facebook、…

Netty权威指南——WebSocket协议开发

一、简介 由于HTTP协议的开销&#xff0c;导致他们不适于用于低延迟应用&#xff0c;为了解决这些问题&#xff0c;WebSocket将网络套接字引入到了客户端和服务端&#xff0c;浏览器和服务器之间可以通过套接字建立持久的连接&#xff0c;双方随时可以互发数据给对方&#xff…

netty权威指南 微云_《Netty权威指南》(二)NIO 入门

2.1 BIO 采用 BIO 通信模型的服务器&#xff0c;通常由一个独立的 Acceptor 线程负责监听客户端的连接&#xff0c;它接收到客户端连接请求之后为每个客户端创建一个新的线程进行处理&#xff0c;处理完成后&#xff0c;通过输出流返回应答给客户端&#xff0c;线程销毁。 grap…

netty 权威指南~第11章——WebSoket协议开发

本章主要学习内容如下&#xff1a; 1、WebSocket入门 2、Netty WebSocket协议开发 第节一&#xff1a;WebSocket入门 WebSocket是HTML5开始提供的一种浏览器与服务器进行全双通信的网络技术&#xff0c;WebSocket通信协议与2011年被IEIF定位标准RFC6455&#xff0c;WebsSock…

Netty权威指南 第2版

https://www.cnblogs.com/plxz/p/9910493.html 第一章  Java的I/O演进之路 1.I/O基础入门 1.Linux网络I/O模型简介 1.阻塞I/O模型&#xff1a;最常用的I/O模型&#xff0c;缺省情况下&#xff0c; 所有文件操作都是阻塞的 2.非阻塞I/O模型&#xff1a;recvform从应用层到内…

Netty权威指南总结(一)

一、为什么选择Netty&#xff1a; API使用简单&#xff0c;开发门槛低&#xff0c;屏蔽了NIO通信的底层细节。 功能强大&#xff0c;预制了很多种编解码功能&#xff0c;支持主流协议。 定制能力强&#xff0c;可以通过ChannelHandler对通信框架进行灵活地拓展。 性能高、成熟、…

Netty权威指南

Chapter1.java I/O演进之路 1.1I/O基础入门 在java 1.4之前&#xff0c;java程序员在开发高性能I/O程序的时候&#xff0c;会面临的问题主要有&#xff1a; 1.没有数据缓冲区&#xff0c;I/O性能存在问题 2.没有c或者c中的Channel概念&#xff0c;只有输入和输出流 3.同步…

三维视觉传感器的类型

三角法测量原理 视觉传感器的坐标系统 单一摄像机二维传感器 点结构光视觉传感器 线结构光视觉传感器 条纹结构光视觉传感器 条纹编码三维视觉传感器 彩色编码视觉传感器 被动双目视觉传感器 编码照明双目视觉传感器

传感器sensor

传感器分类 转换原理 传感器名称 典型应用 转换形式 中间参量 电 参 数 电 阻 移动电位器角点 改变电阻 电位器传感器 位移 改变电阻丝或片尺寸 电阻丝应变传感器、半导体应变传感器 微应变、力、负荷 利用电阻的温度效应 热丝传感器 气流速度、液体流量 电阻…

多任务多传感器数据融合实现3D目标检测

转载自&#xff1a;自动驾驶之心 01 引言 本文介绍一篇uber公司在CVPR上发表的一篇论文&#xff0c;即使用多种传感器&#xff08;LiDAR和RGB相机&#xff09;数据&#xff0c;以及多任务进行数据融合&#xff0c;实现准确高效的3D目标检测。简而言之&#xff0c;自动驾驶领域…

压力传感器

压力传感器 压力传感器是最常用的一种传感器&#xff0c;其应用范围有各种工业互通环境&#xff0c;涉及航空&#xff0c;航天&#xff0c;军工&#xff0c;石化&#xff0c;电力等。按照不同的测试&#xff0c;压力类型可分表压传感器&#xff0c;差压传感器&#xff0c;绝压…

多传感器融合定位(一)——3D激光里程计

目录 一、点云地图整体流程 二、激光里程计方案 2.1 ICP点到点 2.1.1 ICP推导 2.1.2 ICP改进 2.2 NDT 2.2.1 NDT推导 2.2.2 NDT改进 2.3 LOAM系 2.3.1 LOAM 2.3.2 A-LOAM 2.3.3 LEGO-LOAM 2.4 数据集及评价指标 2.4.1 KITTI简介 2.4.2 指标 一、点云地图整体流程…

MMDetection3D 1.1:统一易用的 3D 感知平台

自从两年前 MMDetection3D 发布以来&#xff0c;我们收到了很多用户的反馈&#xff0c;其中有不少有价值的建议&#xff0c;同时也有很多吐槽&#xff08;当然我们非常欢迎大家来吐槽&#xff09;&#xff0c;也有很多社区用户参与到我们代码库的完善中&#xff0c;我们也非常高…