c语言数据结构---链表

news2024/11/21 0:19:32

我喜欢我的懦弱,痛苦和难堪也喜欢。喜欢夏天的光照,风的气息,蝉的鸣叫,喜欢这些,喜欢得不得了。
——村上春树《寻羊冒险记》在这里插入图片描述


1.对链表的理解在这里插入图片描述

2.链表每个节点的创建

3.输出链表

链表:顾名思义,就像一条铁链一样,把每一个铁链的链节点连接起来。

链表的基本结构如下:
在这里插入图片描述

链表每个节点的创建

首先,一条铁链,有多个节点,每两个节点之间会连接起来。
那么这些节点是如何创建的呢?
—结构体—

typedef struct node {
	int data;
	struct node* next;
}Node;

创建一个结构体类型,该结构体有两个成员,一个是数据data,一个是结构体指针。

在这里插入图片描述
为什么要这样创建呢?
一条铁链,要有第一个节,第二个节,第三个节…
第一个节和第二个节之间,是不是互相扣在一起呢?

下面:
结构体成员设置完后,就可以开始创建每一个节点了。

先上代码:
Node  *CreatList()
{
	int n;
	scanf("%d", &n);//这是你要创建的节点数
	Node* phead, * ptail, * p;//结构体指针
	phead = ptail = p = NULL;//为什么要设置头,尾,和一个p呢?
	//请看下图
	int i = 0;
	while (i < n) {
		p = (Node*)malloc(sizeof(Node));
		scanf("%d", &p->data);
		p->next = NULL;
		if (phead == NULL)
		{
			phead = p;
		}
		else
		{
			ptail->next = p;
		}
		ptail = p;
		i++;
	}
		return (phead);
}

先申请一块空间,申请的空间返回的地址存在结构体指针p中
在这里插入图片描述
上面这是p自己的地址

下面这是p里面放的东西
在这里插入图片描述
看图可以知道,p里面放的是 结构体(这个结构体里边有data和next两个成员)的第一个地址。

画图可以这样表示:
在这里插入图片描述

把该结构的第二块指针空间置空(第一块空间是放数据的,假设
输入了1)

在这里插入图片描述
第一次循环结束后,头结构体指针和尾结构体指针都指向了第一个节点的地址

在这里插入图片描述
第二次循环,如下图:
在这里插入图片描述
第三次循环:
以此类推,直到最后一个节点
在这里插入图片描述

一个链表就创建完成了
在这里插入图片描述

输出链表

typedef struct node {
	int data;
	struct node* next;
}Node;

Node* CreatList()
{
	int n;
	scanf("%d", &n);
	Node* phead, * ptail, * p;
	phead = ptail = p = NULL;
	int i = 0;
	while (i < n) {
		p = (Node*)malloc(sizeof(Node));
		scanf("%d", &p->data);
		p->next = NULL;
		if (phead == NULL)
			phead = p;
		else
			ptail->next = p;
		ptail = p;
		i++;
	}
	return (phead);
}

void ShowList(Node* phead)
{
	Node* p;
	for (p = phead; p != NULL; p = p->next)
	{
		printf("%d ", p->data);
	}

}

int main(void)
{
	Node* phead;
	phead = CreatList();
	ShowList(phead);
	return 0;
}

完整创建节点,输出每个数据代码如上:
运行结果:
在这里插入图片描述
链表的基础到这里就完成了,如果看不懂链表,建议对指针和结构体补课。

在这里插入图片描述

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

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

相关文章

Redis-全面详解(学习总结---从入门到深化)

Redis概述_为什么要用NoSQL 单机Mysql的美好年代 在90年代&#xff0c;一个网站的访问量一般都不大&#xff0c;用单个数据库完全可以轻松应付。在那个时候&#xff0c;更多的都是 静态网页&#xff0c;动态交互类型的网站不多。 遇到问题&#xff1a; 随着用户数的增长&#…

centos7搭建DHCP服务器,实现上网

环境如下&#xff1a; 三台主机&#xff0c;一台centos7&#xff0c;当DNS服务器&#xff0c;一台centos7测试&#xff0c;一台window10测试。 版本centos7.6 三者都是在vmnet8环境下 centos7&#xff08;dns服务器&#xff09;&#xff1a;192.168.139.200 centos&#x…

2小时开发《点球射门游戏》,动画演示思路(下),代码已开源

前沿 首选感谢各位对我这边文章(2小时开发《点球射门游戏》&#xff0c;动画演示思路&#xff08;上&#xff09;&#xff0c;代码已开源&#xff09;的点赞、收藏与支持&#xff0c;今天在这里主要是接上一篇文章&#xff0c;讲一讲游戏界面中的一些动画与逻辑的实现&#xf…

SpringBoot + Elasticsearch 实现模糊查询,批量CRUD,排序,分页,高亮!

一、引入依赖 当前Elasticsearch服务端的版本为8.5.1,此处Spring Data Elasticsearch的版本为2.6.1 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version&…

Java中不能在foreach中进行元素的remove和add操作

参考文献&#xff1a;https://juejin.im/post/6844903794795347981 在阿里巴巴Java开发手册中&#xff0c;有这样一条规定&#xff1a; 但是手册中并没有给出具体原因&#xff0c;本文就来深入分析一下该规定背后的思考。 foreach循环 以下实例演示了 普通for循环 和 foreach…

安卓APP源码和设计报告——健身系统

一、设计背景 1.需求分析 对于很多人来说拥有一副好身材能让自己增添不少魅力;对于爱吃而又担心自己发胖的人来说适当的运动健身是最好的选择。移动互联网时代&#xff0c;市场上“约跑”“约健身”健身APP软件成为新时代闺蜜朋友的互动模式&#xff0c;健身热潮的来临&#…

客快物流大数据项目(九十三):ClickHouse的ReplacingMergeTree深入了解

文章目录 ClickHouse的ReplacingMergeTree深入了解 一、创建ReplacingMergeTree表的说明 二、创建ReplacingMergeTree引擎的表

主成分分析 (PCA) 和独立成分分析 (ICA)附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步进步&#xff0c;matlab项目目标合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信息&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算…

某乎x-zse-96

看到有读者咨询知乎x-zse-96,简单做一下分析和记录。 版本:“x-api-version”:“3.0.91”,“x-zse-93”:“101_3_3.0” 随便找了一个搜视频接口 /api/v4/search_v3 经测试发现,目前请求必带的参数有headers 中的x-zse-96、x-zse-93、x-api-version 和 cookie中的d_c0。 …

聊一聊责任链模式

将一堆“事情”串联在一起&#xff0c;有序执行&#xff0c;就叫责任链 一、概述 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是将链中每一个节点看作是一个对象&#xff0c;每个节点处理的请求均不同&#xff0c;且内部自动维护一个下一节点对象。当…

【数据结构】图算法和LRUCache

文章目录最小生成树1.最小生成树概念2.Kruskal算法3.Prim算法最短路径算法单源最短路径--Dijkstra算法单源最短路径--Bellman-Ford算法多源最短路径--Floyd-Warshall算法LRUCacheLRUCache实现源码地址最小生成树 1.最小生成树概念 连通图中的每一棵生成树&#xff0c;都是原图…

软硬协同:基于倚天的视频云编码性能升级

算力时代&#xff0c;靠吃「硬件红利」便能搞定新应用场景的「甜蜜期」已经过去。人类社会的每一次科技跃迁&#xff0c;其本质都是计算力的突破与演进。 算盘拨出农耕文明的繁荣&#xff0c;机械计算机催生出第一次工业革命的袅袅蒸汽&#xff0c;而云计算的发展让万物互联成…

Spark零基础入门实战(二)Scala基础之数据类型

在Scala中,所有的值都有一个类型,包括数值和函数。如图1-4所示,说明了Scala的类型层次结构。 Any是Scala类层次结构的根,也被称为超类或顶级类。Scala执行环境中的每个类都直接或间接地从该类继承。该类中定义了一些通用的方法,例如equals()、hashCode()和toString()。…

【畅购商城】微信支付之支付模块

目录 支付页面 接口 后端实现 ​​​​​​​前端实现​​​​​​​ ​​​​​​​支付页面 步骤一&#xff1a;创建 flow3.vue组件 步骤二&#xff1a;引入第三方资源&#xff08;js、css&#xff09; <script> import TopNav from ../components/TopNav impor…

[附源码]Python计算机毕业设计Django疫情物资管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

电动汽车 (BEV) 优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f389;作者研究&#xff1a;&#x1f3c5;&#x1f3c5;&#x1f3c5;本科计算机专业&#xff0c;研究生电气学硕…

Vue3中的pinia使用(收藏版)

1.pinia介绍 pinia 是 Vue 的存储库&#xff0c;它允许您跨组件/页面共享状态。就是和vuex一样的实现数据共享。 依据Pinia官方文档&#xff0c;Pinia是2019年由vue.js官方成员重新设计的新一代状态管理器&#xff0c;更替Vuex4成为Vuex5。 Pinia 目前也已经是 vue 官方正式的状…

原创 | 传统医药零售如何实现数字化转型

一、数字化转型是零售药店未来实现增长的必由之路“十四五”规划将清洁能源、军事、消费、医药以及高端制造等行业定为未来需要重点关注的领域。围绕“医保、医疗、医药”三条主线&#xff0c;医药行业推出了一系列重要的改革措施&#xff0c;即将进入有史以来最大变革的黄金时…

【Mysql 基础知识】

一、引言 #1.1 现有的数据存储方式有哪些&#xff1f; Java程序存储数据&#xff08;变量、对象、数组、集合&#xff09;&#xff0c;数据保存在内存中&#xff0c;属于瞬时状态存储。 文件&#xff08;File&#xff09;存储数据&#xff0c;保存在硬盘上&#xff0c;属于持久…

Talk | 香港大学在读博士生马逴凡:重新思考分辨率对于高效视频理解的意义

本期为TechBeat人工智能社区第460期线上Talk&#xff01; 北京时间12月7日(周三)20:00&#xff0c;香港大电子电机在读博士生——马逴凡的Talk将准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “重新思考分辨率对于高效视频理解的意义 ”&#xff0c;届时…