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

P1 什么是链表 C语言简单易懂

目录

前言

01 什么是链表

02 数组的特点 

03 数组的缺点

3.1 删除数组其中一个元素

3.2 数组增加某个节点

04 链表


前言

                                 

🎬 个人主页:@ChenPi

🐻推荐专栏1: 《 C++ 》✨✨✨ 

🔥 推荐专栏2: 《 Linux C应用编程(概念类)》✨✨✨

📝推荐专栏3: ​​​​​​《链表_@ChenPi的博客-CSDN博客》 ✨✨✨
🍉本篇简介:>:讲解链表的运行方式和链表和数组的区别

这一节,我们来讲解链表。很多很多人看到链表两个字啊,就觉得怕,其实它不可怕的,而且很好用,现在我们就来讲解链表

01 什么是链表

它就是一个普通结构体的应用而已。

链表啊,它是一个好东西啊,之所以能够存在列表这个东西,说明它能够帮忙解决一些实际问题。

链表只是一种数据结构。

那所谓的数据结构就是数据存放的思想。

明我们说编程难的并不是c语言本身,

而是一些思想。其中,链表就是一种数据存放的一种思想。

02 数组的特点 

我们以前学过数据存放,也可以说数据的一个集合。

学过数组吧,大家都对这个数组很熟悉

他非常明白了一个特点是。每一个元素地址。都是连续的。

比如说我们一个数组arr。

int arr[10] = {0,1,2,3,4,5,6,7,8,9,10};

其中有10个数据,比如说12345678910啊。

它就是在内存连续的一段空间。存放123456  直到10啊,假设这个初始地址是你0x00啊,那么第二个是0x0,int整形数的大小是四个字节,地址是连续的,也就是说。最大空间就是10*4 = 40

数组的特点就是在一个连续的内存空间里面存放着某些特点的数据

这是它的特点啊,一种比较特别的数据存储方式 

03 数组的缺点

那这样有什么缺点吗?

数组的话改其中的数据或者查询数据的话其实还好

但是如果你要增加一个元素呢?你要删除一个元素呢?

3.1 删除数组其中一个元素

删除一个元素是不是很很困难?

数组的地址是连续的

假设说,我这个第三个元素被我干掉了。那你该如何处理这个地址空间,

它的数据已经变得不连续了。

如果要把右边的数据都往左移

你的运算量就比较大了,你要挪动整个数组。

3.2 数组增加某个节点

比如说我要在这个六跟七之间啊,加一个11啊,怎么办啊?

因为他们地址连续的代表这个空间是没有多余的内存的,

实际上,你要把11存放进来,你首先要数到六,然后把七八九十往后挪一挪,

腾出一个位置给11啊,你的内存的开销,你的运算量肯定会变大的,所以说不灵活

而且数组一开始的时候就把大小给确认了,所以说不管是malloc也好,还是数组,也是都是一口气申请了多大的空间啊,他们都存在这个问题不灵活,

04 链表

那链表表就很好的解决了这个问题。列表的每一项,它都是一个结构体。

struct Node {int value; // 值Node *next; // 下一个节点指针
};

比如说我现在有一个链表,

里面有两项一项是一个整形数的一个数据value

下一个是一个指针,struct Node * test

比如说现在有这个结构体1

结构体1里面有个指针,我结构体1的指针指向结构体2的地址,结构体2的指针指向结构体3的地址,也就是说这几个结构体是被串联在一起的

这样子无疑就给整个数据的存储添加了很大的灵活性,比如说我现在有这么一串数啊,12345。

我先要把三删掉,那不很简单吗,把二里面存放的地址改成四嘛就完了删就删掉了就一句话

如果要是数组的话呢?12345,你把3删掉,删掉以后,这个内存啊,数据还得往前挪,五个数据还好,假设后面有100个数据?你都要挪多少次啊啊

如果是链表,那我这个后面有100个数据,是不是也很好处理啊?跟后面的数据没关系吧,我只要去变动二里面的指针地址只像是就可以了,多灵活是不是那我先要增加一下怎么办呢?

同样的我有100个数据,我想要在这个这里插入一下,怎么办?那它的下一个指向它那新的下一个指向这个。链表很灵活,

那下一小章,我们来正式的来学习链表,它是个好东西,不要怕它啊,学会以后合理的使用它。

相关文章:

P1 什么是链表 C语言简单易懂

目录 前言 01 什么是链表 02 数组的特点 03 数组的缺点 3.1 删除数组其中一个元素 3.2 数组增加某个节点 04 链表 前言 🎬 个人主页:ChenPi 🐻推荐专栏1: 《 C 》✨✨✨ 🔥 推荐专栏2: 《 Linux C应用编程(概念…...

Python实现FA萤火虫优化算法优化循环神经网络分类模型(LSTM分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法(Fire-fly algorithm,FA)由剑桥大学Yang于2009年提出 , …...

Spring Task

Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。 **定位:**定时任务框架 **作用:**定时自动执行某段Java代码 cron表达式 cron表达式其实就是一个字符串,通过cron表达式可以定义任务触…...

HttpServletRequest/Response视频笔记

学习地址:144-尚硅谷-Servlet-HttpServletRequest类的介绍_哔哩哔哩_bilibili 目录 1.HttpServletRequest 类 a.HttpServletRequest类有什么作用 b.HttpServletRequest类的常用方法 c.如何获取请求参数 d.解决post请求中文乱码问题 获取请求的参数值相关问题 …...

网上选课系统源码(Java)

JavaWebjsp网上选课系统源码 运行示意图:...

mac修改默认shell为bash

1. 打开系统偏好设置 2. 点击用户群组 3. 按住ctrl,点击用户名 4. 点击高级选项,修改登录shell 参考:在 Mac 上将 zsh 用作默认 Shell - 官方 Apple 支持 (中国)...

基于Java SSM小区物业管理系统

小区有多栋住宅,每栋楼有多套物业(房屋),物业管理公司提供物业管理服务,业主需要按月缴纳物业费。小区物业管理系统对物业公司的日常工作进行管理。系统管理的对象及操作有: 楼宇信息:楼号、户数、物业费标准。 房屋信…...

计算机网络408

一:计算机网络体系结构 1.计网的概念,组成,功能和分类 一:计算机网络的发展 (3)从功能组成视觉看:分为资源子网和通信子网 2.计网性能指标 注意:带宽影响链路入口处的发射速率—>从而影响了…...

【android开发-01】android中toast的用法介绍

1,android中toast的作用 在Android开发中,Toast是一种用于向用户显示简短消息的轻量级对话框。它通常用于向用户提供一些即时的反馈信息,例如操作结果、提示或警告。 Toast的主要作用如下: 提供反馈:Toast可以在用户…...

打印元素绘制协议Java实现

我一直提倡的面向接口和约定编程,而打印元素绘制协议一直是我推荐的打印实现方式,我以前只是强调按打印元素绘制协议输出数据就行了,有实现程序按协议控制打印,说是可以用任何语言实现客户端程序而不影响打印业务,那么…...

js 处理编译器html 包含img的标签并设置width

var imgElements document.getElementsByTagName(img); for (let imgElement of imgElements) { //1.如果有style属性,去掉style属性中的width属性和height属性 if (imgElement.hasAttribute(st…...

同旺科技 分布式数字温度传感器 -- OPC Servers测试

内附链接 1、数字温度传感器 主要特性有: ● 支持PT100 / PT1000 两种铂电阻; ● 支持 2线 / 3线 / 4线 制接线方式; ● 支持5V~17V DC电源供电; ● 支持电源反接保护; ● 支持通讯波特率1200bps、2…...

php获取过去一段的时间范围

在 PHP 中获取过去一周的时间,你可以使用 DateTime 和 DateInterval 类。这里是一个示例代码,展示如何获取从今天起算的过去一周(7天)的日期: // 当前日期 $today new DateTime();// 设置日期为一周前 $oneWeekAgo …...

张三、如花、王婆带你了解Shell命令以及运行原理

文章目录 前言概述张三、王婆、如花的故事Shell命令以及运行原理后记 前言 Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序&…...

redis介绍和安装、redis普通连接和连接池、字符串类型、hash类型、列表类型列表类型

文章目录 redis介绍和安装安装步骤启动,连接 redis普通连接和连接池普通连接连接池 redis字符串类型redis hash类型redis列表类型 redis介绍和安装 redis 什么? 数据库就是个存数据的地方:只是不同数据库数据组织,存放形式不一样…...

集成开发环境PyCharm的使用【侯小啾python领航计划系列(三)】

集成开发环境 PyCharm 的使用【侯小啾python领航计划系列(三)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ�…...

Flink(九)【时间语义与水位线】

前言 2023-12-02-20:05,终于写完啦,最近状态不错。刚写完又收到了她的消息哈哈哈哈,开心。 再去全力打拼一次,奋战一场,就算最后打了败仗也无所谓,至少你留下了足迹。 《解忧杂货店》 1、时间语义 …...

torch中的随机数种子

如何在torch生成随机数时,设置随机种子,要求每次调用生成的随机数都一样 在 PyTorch 中,可以使用 torch.manual_seed(seed) 函数设置随机种子,以确保每次运行代码时生成的随机数都一样。 以下是一个示例代码,展示了如…...

C 标准库 <math.h>

C 标准库 <math.h> C <math.h>头文件声明了一组函数来执行数学运算&#xff0c;例如&#xff1a;sqrt()计算平方根&#xff0c;log()查找数字的自然对数&#xff0c;等等。 math.h 头文件定义了各种数学函数和一个宏。在这个库中所有可用的函数都带有一个 double…...

一篇带你串通数据结构

文章目录 导论数据结构的定义数据结构在计算机科学中的重要性为什么学习数据结构很重要 1、基本概念1.1、数据、数据元素和数据项的概念1.2、数据对象与数据结构的关系1.3、逻辑结构与物理结构 2、线性结构2.1、数组2.2、链表2.3、栈2.4、队列 3、非线性结构3.1、树3.2、图 4、…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...