单链表(c语言简单实现)

news2024/11/15 7:12:31

 单链表是一种常见的数据结构

 一、结构特点

 1. 由一系列节点组成,每个节点包含数据域和指向下一个节点的指针域。

2. 最后一个节点的指针域为 null,表示链表的结尾。

 二、主要操作

 1. 插入节点:可以在链表的头部、尾部或特定位置插入新节点。

- 头部插入:操作简单,只需将新节点的指针指向原链表的头节点,然后更新链表头指针。

- 尾部插入:需要遍历链表找到最后一个节点,然后将其指针指向新节点。

- 特定位置插入:先找到目标位置的前一个节点,然后进行插入操作个节点,然后进行插入操作。
2. 删除节点:可以删除链表中的特定节点。
- 首先找到要删除节点的前一个节点,然后将其指针指向要删除节点的下一个节点。
3. 查找节点:通过遍历链表,根据特定条件查找目标节点。
 
三、优点
 
1. 动态内存分配:可以根据需要动态地增加或减少链表的长度,不需要预先确定链表的大小。
2. 插入和删除操作高效:在特定位置进行插入和删除操作时,只需修改指针,时间复杂度为 O(1)(在头部或尾部插入/删除)或 O(n)(在特定位置插入/删除,n 为链表长度)。
 
四、缺点
 
1. 访问特定位置的节点效率低:需要从头节点开始遍历链表,时间复杂度为 O(n)。
2. 不支持随机访问:无法像数组那样通过下标直接访问特定位置的元素。

示例:

创建一个结构体

b44aa10fe25c4ee3978be2050ce27173.png

 构建单链表的框架和函数的基本功能

SList.h文件

cc0381031a194a8ca19ac30f5d4fe133.png

 SList.c文件

打印链表f384018692b74bd7b5fd97eb965e0894.png

 头部插入数据

5f9156c775a54719979f3f64c56296f7.png

 创建节点

3883c0815bc84e15825c0313f269fb33.png

 尾部插入数据f18625940423478586c15b306f642c71.png

 尾部删除数据

11e11e7e24c548f2818dfa708f5960be.png

 头部删除数据

48bd4c2e09f746c4bdebb2d7cbc85d3f.png

 查找数据

b63a1c50fdd443a1bd9dd007a4bd84e8.png

 查到pos位置数据,然后在pos前面插入数据278198f83c0e41d5a4ac6702608d7675.png

 查到pos位置数据,然后在pos后面插入数据

1e3f33dc82364688a5065e92b7320ad9.png

 查到pos位置的数据,然后删除pos这个点的数据

42de811729cc494081fdadecfc15571e.png

 查到pos位置的数据,然后删除pos后面那个的数据

294db97969024208b9917930f79172e6.png

 test.c文件

对这个链表的基本处理

72d1fbf5c42941769c62dcb392722558.png

b8977b2996e9487ba5ae0781e92a425b.png 

 

 

 

 

 

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

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

相关文章

IPD流程体系:IPD在硬件产品开发中的应用

目录 1、内容简介 2、开发各阶段介绍 3、PVT阶段 4、资源群更新 作者简介 1、内容简介 在硬件类相关产品的开发过程中, 每个阶段的工作都是需要按照一定的流程、规范和标准去进行的。 整体还是相对瀑布化的流程, 每个阶段的输入、输出、准入、准…

不可思议的效率飞跃:RPA如何重塑你的工作流程,释放人力潜能!

RPA简介 机器人流程自动化(Robotic Process Automation,简称RPA)是一种模拟人类用户操作的软件技术,它通过自动化执行重复性、规律性强的任务来提高工作效率和准确性。RPA软件机器人可以模拟鼠标点击、键盘输入、数据复制粘贴等操…

使用 Bedrock 模型进行 SQL 查询生成:高效自动化的全新体验!

引言 在当今高度重视可持续发展的时代,亚马逊通过其 Bedrock 模型,展示了公司在运营和增长方面的战略愿景。同时,Amazon SageMaker 为机器学习领域的专业人士提供了强大的工具,加速了模型的开发和部署。 探索亚马逊的 Bedrock 模…

【数据结构】什么是二叉搜索(排序)树?

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 📌二叉搜索(排序)树的概念 📌二叉搜索(排序)树的操作 🎏二叉搜索树的查找 🎏二叉搜索树的插入 🎏二叉搜索树的…

如何选择OS--Linux不同Distribution的选用

写在前言: 刚写了Windows PC的不同editions的选用,趁热,把Linux不同的Distribution选用也介绍下,希望童鞋们可以了解-->理解-->深入了解-->深入理解--...以致于能掌握特定版本的Linux的使用甚者精通。……^.^…… so&a…

【刷题日记】15. 三数之和

15. 三数之和 两数之和可以用巧思也可以用map 三数之和会更加复杂一点,且这道题还需要考虑避免重复答案! 思路: 特判:检如果nums 为 null 或长度小于 3直接返回空数组。排序:使用 sort对数组进行升序排序。就变成了…

OpenAI GPT o1技术报告阅读(4)- 填字游戏推理

✨继续阅读报告:使用大模型来学习推理(Reason) 原文链接:https://openai.com/index/learning-to-reason-with-llms/ 这次我们继续看一个填字游戏的案例。 我们先看下问题: 解决以下填字游戏: Across(横向&#xff09…

Vue3中el-table组件实现分页,多选以及回显

el-table组件实现分页,多选以及回显 需求思路1、实现分页多选并保存上一页的选择2、记录当前选择的数据3、默认数据的回显 完整代码 需求 使用 dialog 显示 table,同时关闭时销毁el-table 表格多选回显已选择的表格数据,分页来回切换依然正确…

【手把手】Windows上安装Python,小白必看

🔗【下载Python】 打开浏览器,访问Python的官方网站: python下载地址 选择适合你系统的Python版本下载。建议下载最新的稳定版。 🔧【安装步骤】 双击下载的安装包,开始安装。 选择“Add Python to PATH”,这样可以让系统知道Python的位置。 点击“Install Now”,…

Java 内存模型(JMM)

JMM,全称 Java Memory Model ,中⽂释义Java内存模型 1. 概述 对于 Java 程序员来说,在虚拟机⾃动内存管理机制下,不再需要像 C/C 程序开发程序员这 样为每⼀个 new 操作去写对应的 delete / free 操作,不容易出现内存…

使用Locust进行接口性能测试:关联与参数化技巧分析

Locust是一款开源的Python性能测试工具,它可以模拟大量并发用户对网站或者其他接口进行压力测试 1. 关联:精确模拟用户操作 在某些场景下,我们需要将之前请求的响应参数关联到后续请求中,以模拟用户操作。这在会话管理&#xff…

2024年中国电子学会青少年软件编程(Python)等级考试(一级)核心考点速查卡

考前练习: 2024年06月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 解析-CSDN博客 2024年03月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答…

MySQL 中的 UTF-8 与 UTF8MB4:差异解析

在 MySQL 数据库中,字符集的选择对于数据的存储和处理至关重要。其中,UTF-8 和 UTF8MB4 是两个常见的字符集选项。那么,它们之间到底有什么区别呢? 一、字符集简介 UTF-8 UTF-8(8-bit Unicode Transformation Format&…

文献阅读(81)FACT

题目:FACT: FFN-Attention Co-optimized Transformer Architecture with Eager Correlation Prediction时间:2023会议:ISCA研究机构:清华 主要贡献 算法优化:提出了Eager Prediction (EP),预测softmax前重…

线性系统分析

一、定义 (1)叠加性 若 且 则称该系统具有叠加性。 叠加性:系统的一个输入不影响系统对其他输入的响应。 (2)均匀性 若 对任意常数a下式都成立 则称该系统具有均匀性。 均匀性:系统能够保持对输入信号的缩放因子不变。 (3)线性系统 若一个系统同时具有叠加性和…

Web开发:基础Web开发的支持

1. 构建项目&#xff1a; 2.添加依赖 <!-- SpringBoot热部署支持(开发阶段使用)--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></d…

头部姿态估计代码+教程

前言 头部姿态估计是计算机视觉中的一个具有挑战性的问题&#xff0c;因为它需要完成多个步骤。首先&#xff0c;我们需要在画面中定位人脸&#xff0c;然后识别出各种面部特征点。如今&#xff0c;当人脸正对摄像头时&#xff0c;识别人脸似乎是一个简单的任务。但问题在于&am…

个人为什么不能参与场外期权?也有办法可以开始交易!

今天带你了解个人为什么不能参与场外期权&#xff1f;也有办法可以开始交易&#xff01;由于监管政策、风险管理、市场透明度和适合性等因素&#xff0c;个人投资者在中国市场上不能参与场外期权交易。 个人为什么不能参与场外期权&#xff1f; 在中国市场上&#xff0c;个人…

Web+Mysql——MyBatis

MyBatis 目标 能够完成Mybatis代理方式查询数据能够理解Mybatis核心配置文件的配置 1&#xff0c;Mybatis 1.1 Mybatis概述 1.1.1 Mybatis概念 MyBatis 是一款优秀的持久层框架&#xff0c;用于简化 JDBC 开发 MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由…

Python 从入门到实战23(属性property)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们讨论了类的定义、使用方法的相关知识。今天我们将学…