c语言单向链表建立,C语言中单向链表的建立

本文探讨了数组与链表这两种数据结构的优缺点。数组虽然方便,但大小固定,可能导致存储浪费。链表作为动态数组,允许在运行时调整大小,节省空间。文章详细介绍了单向链表的结构,包括头节点、数据成员和指针成员,以及如何创建和输出单链表。通过示例代码展示了如何创建存储正整数的链表并打印其值。
摘要由CSDN通过智能技术生成

60c7822501e3432c404a9257a1289653.png

数组作为相似数据的集合,给我们的编程带来了很大的方便和灵活性. 但是数组也有一些缺点. 例如,数组的大小应该事先定义好,不能在程序中进行调整. 这样,为了解决不同的问题,有时需要30个阵列c 单向链表,有时需要50个阵列,这很难统一. 我们只能根据最大可能的需求来定义阵列,这往往会造成存储空间的浪费

我们可以根据需要随时调整数组的大小,以满足不同的需要. 链表是我们需要的动态数组. 它是在程序执行过程中有数据存储时,向系统申请存储空间,不构成对存储区域的浪费

链表是一种复杂的数据结构. 将链表分为单链表和链表三种关系. 目前,简单介绍了单向链表的组成

单个链表有一个头节点头,它指向内存中链表的第一个地址. 链表中每个节点的数据类型为structure type,节点有两个成员: integer成员(实际要保存的数据)和指向下一个结构类型节点的指针,即下一个节点的地址(实际上,这个单链表是一个动态数组,用于存储整数数据). 根据这种结构,对链表中每个节点的访问需要从列表的头开始,后续节点的地址由当前节点给出. 无论访问表中的哪个节点,都需要从列表的头开始按顺序向后搜索. 因为在链表的末尾没有后续节点,所以它的指针字段为null,也就是写为null

be39038869075160361c6582d6461c3a.png

2335570.jpg

上图也显示了这样一层含义: 链表中每个节点的存储地址不是连续的,需要时将每个节点的地址应用到系统中进行分配. 根据内存的现状,系统可以连续分配地址或跳转地址

3.1链表节点数据结构定义

typedef struct Node {

int data;

struct Node *pNext;

} Node_list;

在链表节点的定义中,除了整数成员外c 单向链表,成员pnext是指向完全相同节点类型的指针

9-810-jpg_6-1080-0-0-1080.jpg

在链表节点的数据结构中,一个非常特殊的点是结构中指针字段的数据类型使用未定义的数据类型. 这是C语言中唯一可以先使用后定义的数据结构

3.2链表的创建和输出步骤

1、 创建单链表的过程包括以下步骤:

1. 定义链表的数据结构

2. 创建空表

024832238.png

3. 使用malloc()函数应用将节点分配给系统

4. 分配新节点的空指针成员. 如果是空表,则将新节点连接到头;如果不是,则将新节点连接到表的尾部

5. 判断是否有后续节点需要访问链表. 如果是,请转到步骤3,否则将结束

2、 单链表的输出过程包括以下步骤:

1. 找到页眉

180850861.png

2. 如果是非空表,则输出节点的值成员将退出(如果是空表)

3. 跟踪链表的增长,即查找下一个节点的地址

4. 转到2

3.3程序代码示例:

创建一个单链表来存储正整数,输入0或小于0完成链表的创建,并打印出链表中的值. 方案如下:

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-262728-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值