链表的引入

news2025/2/23 12:33:54

什么是链表

链表一种线性的数据结构,通过指针将一个个零散的内存块连接起来,链表的每个内存块称为结点。结构体指针在这里得到了充分的利用。


为什么要使用链表

链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入节点。链表都有一个头指针,一般以head来表示,存放的是一个地址。链表中的节点分为两类,头结点和一般节点,头结点是没有数据域的。链表中每个节点都分为两部分,一个数据域,一个是指针域。链表就如同车链子一样,head指向第一个元素:第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,它称为“表尾”,它的地址部分放一个“NULL”(表示“空地址”),链表到此结束。


链表和数组的区别和实现

数组(有序)存放数据的地址连续,可对其中某个数据进行修改或查询,但如果要对数组进行增添或删减,是非常麻烦的。数组地址连续,若删除某一位,需让后面的所有数据往前挪;若增添某一位,数组大小已经确定,将会造成数组越界。
链表(无序)存放数据的地址随意,通常运用结构体指针,即第一个指针存放第二个数据的地址,第二个指针存放第三个数据的地址,以此类推。若删除某一位,则只需将前一位指针指向删除位的下一位即可;若增添某一位,则只需将前一位指向添位,增添位指向下一位即可。

数组:

链表:

这里t1.next保存的是t2的地址,t2.next保存的是t3的地址,t1为链表头,所以通过t1能找到后面的数。

可见两者的编译结果相同。

对链表代码进行函数封装化:

#include <stdio.h>

struct Test
{
	int Data;
	struct Test *next;
};

void printLink(struct Test *head)
{
	struct Test *point;//定义一个指针
	point = head;//指向参数的地址
	while(point!=NULL)//如果指针不指向空地址
	{
		printf("%d ",point->Data);//输出地址对应数据
		point = point->next;//将下一个地址赋给point
	}
	putchar('\n');
}

int main()
{
	struct Test t1={1,NULL};
	struct Test t2={1,NULL};
	struct Test t3={3,NULL};
	struct Test t4={4,NULL};
	struct Test t5={5,NULL};

	t1.next=&t2;
	t2.next=&t3; 
	t3.next=&t4;
	t4.next=&t5;
	puts("use t1 to print three nums");
	printLink(&t1);
	return 0;
}

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

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

相关文章

3.13每日一题(分部积分求不定积分)

关键在于看出两类不同类型函数的乘积&#xff0c;要把三角和对数以外的凑到dx上&#xff0c;然后分部积分 注&#xff1a; arctan根号x 的求导为复合求导 根号x分之一的原函数为2*根号x

纳米银线 纳米银纳米线 平均直径: 50-100nm

&#xff08;西&#xff09;纳米银线 &#xff08;安&#xff09;含量&#xff08;%&#xff09;&#xff1a;99.9 &#xff08;瑞&#xff09;平均直径: 50-100nm &#xff08;20nm 30nm 60nm &#xff09; &#xff08;禧&#xff09;长度&#xff1a;10um …

VBA技术资料MF77:组合所选范围中的所有形状

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

照片如何打包?三个方法轻松搞定!

照片打包是一种有效的管理方式&#xff0c;可以提高工作效率、保护照片安全、节省存储空间等。那么如何简单快速地打包照片呢&#xff1f;下面介绍了三种方法~ 方法一&#xff1a;使用嗨格式压缩大师 1、在电脑上打开【嗨格式压缩大师】&#xff0c;点击软件首界面的【图片压缩…

知了汇智为成都理工大学物联网专业学子开展项目实训

随着数字化产业的发展以及产业数字化转型的深入&#xff0c;产业对数字人才的需求也在发生变化。为了培养适应市场需求的高素质物联网专业人才&#xff0c;11月14日&#xff0c;知了汇智携手成都理工大学&#xff0c;为2021级物联网专业学生带来一场别开生面的校内项目实训。 成…

python文件的操作以及简易shadow文件密码破解器

python文件对象以及简易shadow文件密码破解器 文章目录 python文件对象以及简易shadow文件密码破解器文件对象的方法 打开文件关闭文件文件读取文件指针的刷新文件迭代写入文件write()writelines() 案例shawod密码破解脚本 文件对象的方法 常用函数功能f open(‘PATH’)打…

golang工程——opentelemetry简介、架构、概念、追踪原理

opentelemetry 简介 OpenTelemetry&#xff0c;简称OTel&#xff0c;是一个与供应商无关的开源可观测性框架&#xff0c;用于检测、生成、收集和导出 遥测数据&#xff0c;如轨迹、度量、日志。OTel的目标是提供一套标准化的供应商无关SDK、API和工具&#xff0c;用于接 收、…

有哪些项目适合程序员业余时间做,并且短期内能赚点小钱?

要我说&#xff0c;程序员赚点小钱就别指望着自己搞个大项目了。 这几年的市场环境不好&#xff0c;如果你没点家底的话&#xff0c;打工攒的那点积蓄让你创业&#xff0c;一不小心就会血本无归。 对于程序员来说&#xff0c;最合适的还是给别人打工&#xff01;低风险稳定回款…

盗版gpt去广告

一. 内容简介 盗版gpt去广告 二. 软件环境 2.1 Tampermonkey 三.主要流程 3.1 创建javascript脚本 点击添加新脚本 就是在 (function() {use strict;// 在这编写自己的脚本 })();脚本&#xff0c;含解析 // UserScript // name 盗版gpt去广告 // namespace …

亿咖通·天穹Pro行泊一体智能驾驶计算平台正式量产

全球出行科技公司亿咖通科技宣布&#xff0c;旗下首款智能驾驶计算平台——亿咖通•天穹Pro行泊一体智能驾驶计算平台&#xff08;以下简称“该平台”&#xff09;已向车企正式量产交付。作为亿咖通科技在智能驾驶领域的全新突破&#xff0c;亿咖通•天穹Pro智能驾驶计算平台以…

Centos7安装Docker,安装DockerCompose(集群化部署),Docker私服镜像仓库

0.安装Docker Docker 分为 CE 和 EE 两大版本。CE 即社区版&#xff08;免费&#xff0c;支持周期 7 个月&#xff09;&#xff0c;EE 即企业版&#xff0c;强调安全&#xff0c;付费使用&#xff0c;支持周期 24 个月。 Docker CE 分为 stable test 和 nightly 三个更新频道…

element-plus的el-tag标签关闭标签时的高亮显示逻辑

1.tag 实战步骤 首页的tag一开始就会存在&#xff0c;而且是不能进行删除的 当点击左侧栏的时候,如果tag没有该菜单名称则新增&#xff0c;如果已经有了那么当前tag背景为蓝色。 删除当前tag&#xff0c;如果是最后一个&#xff0c;那么路由调整到它前面那个标签并且背景变蓝…

LV.12 D13 UART实验 学习笔记

一、UART帧格式详解 UART Universal Asynchronous Receiver Transmitter 即 通用异步收发器&#xff0c;是一种通用的串行、异步通信总线 该总线有两条数据线&#xff0c;可以实现全双工的发送和接收&#xff0c;在嵌入式系统中常用于主机与辅助设备之间的通信。 通…

奇淫技巧系列之第四篇:如何搜索Jar包中的xml文件

大神链接&#xff1a;作者有幸结识技术大神孙哥为好友&#xff0c;获益匪浅。现在把孙哥视频分享给大家。 孙哥链接&#xff1a;孙哥个人主页 作者简介&#xff1a;一个颜值99分&#xff0c;只比孙哥差一点的程序员 本专栏简介&#xff1a;话不多说&#xff0c;让我们一起干翻J…

索引创建的原则

索引的创建是数据库优化中非常重要的一部分&#xff0c;正确创建索引可以大大提高查询效率。以下是一些创建索引时需要考虑的原则&#xff1a; 根据查询频率创建索引&#xff1a; 频繁用于检索的列&#xff1a; 那些频繁用于查询的列或经常出现在 WHERE、JOIN、ORDER BY 和 GR…

A股风格因子看板(2023.10 第14期)

该因子看板跟踪A股风格因子&#xff0c;该因子主要解释沪深两市的市场收益、刻画市场风格趋势的系列风格因子&#xff0c;用以分析市场风格切换、组合风格暴露等。 今日为该因子跟踪第14期&#xff0c;指数组合数据截止日2023-09-30&#xff0c;要点如下 近1年A股风格因子检验统…

基于springboot实现学生就业管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现学生就业管理系统演示 摘要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;学生就业管理系统也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人…

python连接clickhouse (CK)

Author: tkhywang 2810248865qq.com Date: 2023-11-01 11:28:58 LastEditors: tkhywang 2810248865qq.com LastEditTime: 2023-11-01 11:36:25 FilePath: \PythonProject02\Python读取clickhouse2 数据库数据.py Description: 这是默认设置,请设置customMade, 打开koroFileHead…

FreeRTOS_信号量之互斥信号量

目录 1. 互斥信号量 1.1 互斥信号量简介 1.2 创建互斥信号量 1.2.1 函数 xSemaphoreCreateMutex() 1.2.2 函数 xSemaphoreCreateMutexStatic() 1.2.3 互斥信号量创建过程分析 1.2.4 释放互斥信号量 1.2.5 获取互斥信号量 2. 互斥信号量操作实验 2.1 实验程序 2.1.1 …

pytorch 笔记:GRU

1 介绍 对于输入序列中的每个元素&#xff0c;每一层都计算以下函数&#xff1a; ht​ 是t时刻 的隐藏状态xt​ 是t时刻 的输入ht−1​ 是 t-1时刻 同层的隐藏状态或 0时刻 的初始隐藏状态rt​,zt​,nt​ 分别是重置门、更新门和新门。σ 是 sigmoid 函数∗ 是 Hadamard 乘积。…