数据结构学习系列之单向链表的三种插入方式

  • 方式1:
  • 在单向链表的头结点和第0个结点之间插入新结点,即头插法,代码如下:
  • 示例代码:
int insert_link_list_1(node_t *phead,int data){if(NULL == phead){printf("入参为NULL\n");return -1;}//创建新结点node_t *pnew = NULL;create_link_node_2(&pnew,data);//头插到链表pnew->next = phead->next;phead->next = pnew;return 0;
}
  • 操作步骤:
  • 1.创建新结点pnew
  • 2.将新结点的指针域指向第0个结点的地址,即pnew->next = phead->next
  • 3.再将头结点的指针域指向新结点的地址,即phead->next = pnew
  • 方式2:
  • 在单向链表的最后一个结点后面插入新结点,即尾插法,代码如下:
  • 示例代码:
int insert_link_list_2(node_t *phead,int data){if(NULL == phead){printf("入参为NULL\n");return -1;}//创建新结点node_t *pnew = NULL;create_link_node_2(&pnew,data);//遍历链表,找到最后一个结点node_t *ptemp = phead;while(NULL != ptemp->next){ptemp = ptemp->next;}ptemp->next = pnew;return 0;
}
  • 操作步骤:
  • 1.创建新结点pnew
  • 2.遍历链表,找到链表的最后一个结点ptemp
  • 3.将最后一个结点的指针域指向新结点的地址,即 ptemp->next = pnew
  • 方式3:
  • 在单向链表的任意一个位置,插入新结点,代码如下:
  • 示例代码:
int insert_link_list_3(node_t *phead,int pos,int data){if(NULL == phead){printf("入参为NULL\n");return -1;}if(pos < 0){printf("插入位置不合理,插入失败\n");return -1;}node_t *ptemp = phead;int i = 0;for(i = 0; i < pos; i++){if(NULL == ptemp){break;}ptemp = ptemp->next;}if(i < pos){printf("插入位置不合理,插入失败\n");return -1;}node_t *pnew = NULL;create_link_node_2(&pnew,data);pnew->next = ptemp->next;ptemp->next = pnew;return 0;
}
  • 操作步骤:
  • 1.遍历链表,找到待插入位置的前一个结点,即ptemp;
  • 2.创建新结点pnew
  • 3.将新结点的指针域指向待插位置结点的地址,即 pnew->next = ptemp->next
  • 4.再将待插入位置的前一个结点的指针域指向新结点的地址,即 ptemp->next = pnew

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

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

相关文章

通过es索引生命周期策略删除日志索引

通过es索引生命周期策略删除日志索引 在es 7.x版本之后&#xff0c;多了个索引生命周期的概念&#xff0c;可以一系列的设置&#xff0c;给新生成的索引绑定生命周期策略&#xff0c;到期后&#xff0c;索引自动删除。 也可以通过linux定时任务实现&#xff0c;请查看另一篇文章…

Android 11编译第三弹 ADB开启ROOT权限

一、为什么需要adb root权限 问题&#xff1a;Relese版本&#xff0c;默认adb访问会降级到shell权限&#xff0c;一些敏感操作不能进行&#xff0c;远程调试比较麻烦。且Release版本没有su模块&#xff0c;不能切换Root用户。 开启adb调试以后&#xff0c;默认进入adb是syste…

车联网仿真工具Veins安装指南(基于官方文档)

Veins安装指南 官方文档&#xff1a; tutorial 直接选择最easy的way&#xff1a; 下载一个虚拟机&#xff1a;VMware Workstation Player 下载即可。这个普通版是免费的&#xff0c;pro版正版是要收费的&#xff0c;可以找一些其他的方法下载pro版本&#xff0c;可以同时开…

Linux整合seata

1、到官网下载seata&#xff0c;这里以ZIP为例 2、使用远程工具上传ZIP包 3、通过命令解压 unzip seata-server-1.7.0.zip4、修改配置文件、新建表&#xff0c;参考我之前的文章 分布式系统的多数据库&#xff0c;实现分布式事务回滚&#xff08;1.7.0 seata整合2.0.4nacos…

PHP NBA球迷俱乐部系统Dreamweaver开发mysql数据库web结构php编程计算机网页

一、源码特点 PHP NBA球迷俱乐部系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 基于PHP的NBA球迷俱乐部 二、功能介绍 1、前台主要功能&#xff1a; 系统首页 网站介…

PYTHON知识点学习-函数调用中returnprint

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是Aileen★。希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由 Aileen_0v0★ 原创 CSDN首发&#x1f412; 如需转载还请通知⚠ &am…

Redis可以干什么

Redis可以做什么&#xff1f; 缓存 Redis作为一款高性能的缓存数据库&#xff0c;能够将常用的数据存储在内存中&#xff0c;以提高读写效率。它支持多种数据结构&#xff0c;如字符串、哈希表、列表、集合等&#xff0c;让你可以根据业务需求选择合适的数据结构进行缓存。 …

亚马逊庭院类目或迎来显著增长;倩碧使用TikTok全新搜索广告功能

夏季即将结束&#xff0c;但Jungle Scout Cobalt数据显示&#xff0c;亚马逊的Patio, Lawn & Garden类目仍将迎来显著的季节性增木 除了夏季销售的飙升&#xff0c;Generators & Portable Power发电机和便携式电源子类别的销售一般会在初秋和假日季节会迎来大幅增长&a…

【SpringBoot】详细介绍SpringBoot中Entity类中的getters和setters

在Spring Boot中的Entity类中&#xff0c;getters和setters是用来获取和设置对象属性值的方法。它们是Java Bean规范的一部分&#xff0c;并且通常被用于向开发人员和框架公开类的属性。 在Entity类中&#xff0c;getters和setters方法通常通过property来实现&#xff0c;即将…

【Atcoder】 [AGC030D] Inversion Sum

题目链接 Atcoder方向 Luogu方向 题目解法 妙妙题&#xff01;&#xff01;&#xff01; 考虑一个神奇的转化&#xff0c;把方案求和变成求 i , j i,j i,j 位置是逆序对的概率 最后的答案就是 2 q ∗ ∑ f i , j 2^q*\sum f_{i,j} 2q∗∑fi,j​ 考虑 f i , j f_{i,j} fi,…

事务的总结

数据库事务 数据库事务是一个被视为单一的工作单元的操作序列。这些操作应该要么完整地执行&#xff0c;要么完全不执行。事务管理是一个重要组成部分&#xff0c;RDBMS 面向企业应用程序&#xff0c;以确保数据完整性和一致性。事务的概念可以描述为具有以下四个关键属性描述…

Java“牵手”京东店铺所有商品API接口数据,通过店铺ID获取整店商品详情数据,京东店铺所有商品API申请指南

京东平台店铺所有商品数据接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取京东整店的商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、价格信息等详细信息 。 获取店铺所有商品接口API是一种用于获取电商平台上商品详…

Angular安全专辑之三 —— 授权绕过,利用漏洞控制管理员账户

这篇文章是针对实际项目中所出现的问题所做的一个总结。简单来说&#xff0c;就是授权绕过问题&#xff0c;管理员帐户被错误的接管。 详细情况是这样的&#xff0c;我们的项目中通常都会有用户身份验证功能&#xff0c;不同的用户拥有不同的权限。相对来说管理员账户所对应的…

(数字图像处理MATLAB+Python)第十一章图像描述与分析-第一节、二节:图像描述概述和特征点

文章目录 一&#xff1a;图像描述概述&#xff08;1&#xff09;图像描述&#xff08;2&#xff09;描述子 二&#xff1a;特征点&#xff08;1&#xff09;Moravec角点检测A&#xff1a;原理B&#xff1a;程序 &#xff08;2&#xff09;Harris角点检测A&#xff1a;原理B&…

设计模式入门(二)观察者模式

设计模式入门 本系列所有内容参考自《HeadFirst设计模式》。因为书中的代码是采用java语言写的&#xff0c;博主这里用C语言改写。 这里采用讲故事的方式进行讲解。若有错误之处&#xff0c;非常欢迎大家指导。 设计模式&#xff1a;模式不是代码&#xff0c;而针对设计问题的…

SpringMVC-学习笔记

文章目录 1.概述1.1 SpringMVC快速入门 2. 请求2.1 加载控制2.2 请求的映射路径2.3 get和post请求发送2.4 五种请求参数种类2.5 传递JSON数据2.6 日期类型参数传递 3.响应3.1 响应格式 4.REST风格4.1 介绍4.2 RESTful快速入门4.3 简化操作 1.概述 SpringMVC是一个基于Java的Web…

硅谷课堂3

文章目录 一、微信授权登录1、需求描述2、授权登录2.1、配置授权回调域名2.2、前端处理3、授权登录接口3.1、引入微信工具包3.2、添加配置3.3、添加工具类3.4、controller类3.5、编写`getByOpenid(String openId)`方法3.6、编写`JwtHelper.createToken()`方法3.6.1、JWT介绍3.6…

七、性能测试之内存分析

性能测试之内存分析与实战 一、内存知识1、理解&#xff1a;2、内存的组成&#xff1a;内存地址、存储单元3、内存---树形结构1、链表2、二叉树 4、数据结构 二、内存使用1、典型案例&#xff1a;JVM&#xff08;java虚拟机&#xff09;包含程序计数器&#xff0c;java虚拟机栈…

断点续传和下载原理

分析&回答 断点续传和断点下载都是用的RandomAccessFile, 它具有移动指定的文件大小的位置的功能seek 。 断点续传是由服务器给客户端一个已经上传的位置标记position&#xff0c;然后客户端再将文件指针移动到相应的position&#xff0c;通过输入流将文件剩余部分读出来…

说说你了解的 CDC

分析&回答 什么是 CDC CDC,Change Data Capture,变更数据获取的简称&#xff0c;使用CDC我们可以从数据库中获取已提交的更改并将这些更改发送到下游&#xff0c;供下游使用。这些变更可以包括INSERT,DELETE,UPDATE等。用户可以在以下的场景下使用CDC&#xff1a; 使用f…