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

C语言:链表插入

链表的插入分为头插入,中间插入和尾插入。

具体方法如下:

#include<stdio.h>
#include<stdlib.h>typedef struct node
{int s;struct node* pnext;
}list;list* addnode(list** pphead, list** ppend, int n)
{list* ptemp = malloc(sizeof(list));ptemp->s = n;ptemp->pnext = NULL;if (NULL == *pphead){*pphead = ptemp;*ppend = ptemp;}else{(*ppend)->pnext = ptemp;*ppend = ptemp;}
}void insertnode(list** pphead, list** ppend, list* pnode, int val)
{//头插入//新来节点的下一个指向头节点//头指针指向新来的节点(新来的节点成为新的头节点)if ((*pphead)->s == val){pnode->pnext = *pphead;*pphead = pnode;return;}//中间插入//遍历链表//找到插入位置的前一个结点//新来结点的下一个指向标记的下一个//标记的下一个指向新来的节点list* pmark = *pphead;while (pmark->pnext!= NULL){if (pmark->pnext->s == val){pnode->pnext = pmark->pnext;pmark->pnext = pnode;return;}pmark = pmark->pnext;}//尾插入//尾节点的下一个指向新来的节点//尾指针指向新来的节点(新来的节点成为新的尾节点)(*ppend)->pnext = pnode;*ppend = pnode;
}int main()
{list* phead = NULL;//定义头指针list* pend = NULL; //定义尾指针//先添加几个节点addnode(&phead, &pend, 1);addnode(&phead, &pend, 2);addnode(&phead, &pend, 3);addnode(&phead, &pend, 4);//创建一个节点list* ptep = malloc(sizeof(list));ptep->s = 7;ptep->pnext = NULL;//将创建的节点插入insertnode(&phead, &pend, ptep, 5);//遍历链表,检验是否成功插入while (phead != NULL){printf("%d\n", phead->s);phead = phead->pnext;}return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • qiankun微前端
  • 【MySQL进阶之路】表结构的操作
  • live2d + edge-tts 优雅的实现数字人讲话 ~
  • 【在线+sdwebui】在线免费运行stable-diffusion-webui (无需配置环境)
  • 组件间通信高级
  • Windows平台RTSP|RTMP播放器如何实时调节音量
  • 使用 Fyne 构建 GUI 应用:设置标签文本和自增计数器
  • LLMs之Framework:Hugging Face Accelerate后端框架之FSDP和DeepSpeed的对比与分析
  • 【C++第十三章】Stack、Queue和Priority_Queue
  • Scikit-learn:用于数据挖掘和数据分析的简单而有效的工具,建立在 NumPy, SciPy 和 Matplotlib 上。
  • 【数学分析笔记】第2章第2节数列极限(2)
  • 《深入浅出算法竞赛》-递推与递归(笔记版)
  • Python之函数的使用
  • ChatGLM-6B 主要代码分析 RotaryEmbedding
  • vulnhub靶机 DC-9(渗透测试详解)
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [译]Python中的类属性与实例属性的区别
  • 07.Android之多媒体问题
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Angular 2 DI - IoC DI - 1
  • Consul Config 使用Git做版本控制的实现
  • create-react-app项目添加less配置
  • CSS实用技巧干货
  • k8s如何管理Pod
  • nodejs调试方法
  • overflow: hidden IE7无效
  • Vue实战(四)登录/注册页的实现
  • zookeeper系列(七)实战分布式命名服务
  • 最近的计划
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #传输# #传输数据判断#
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (02)Unity使用在线AI大模型(调用Python)
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (PySpark)RDD实验实战——取最大数出现的次数
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)计算机毕业设计大学生兼职系统
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (算法)Travel Information Center
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • ./configure、make、make install 命令
  • .bashrc在哪里,alias妙用
  • .NET NPOI导出Excel详解
  • .NET/C# 使窗口永不获得焦点
  • .net打印*三角形
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .net项目IIS、VS 附加进程调试
  • @Autowired和@Resource装配
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思