数组作为相似数据的集合,给我们的编程带来了很大的方便和灵活性. 但是数组也有一些缺点. 例如,数组的大小应该事先定义好,不能在程序中进行调整. 这样,为了解决不同的问题,有时需要30个阵列c 单向链表,有时需要50个阵列,这很难统一. 我们只能根据最大可能的需求来定义阵列,这往往会造成存储空间的浪费
我们可以根据需要随时调整数组的大小,以满足不同的需要. 链表是我们需要的动态数组. 它是在程序执行过程中有数据存储时,向系统申请存储空间,不构成对存储区域的浪费
链表是一种复杂的数据结构. 将链表分为单链表和链表三种关系. 目前,简单介绍了单向链表的组成
单个链表有一个头节点头,它指向内存中链表的第一个地址. 链表中每个节点的数据类型为structure type,节点有两个成员: integer成员(实际要保存的数据)和指向下一个结构类型节点的指针,即下一个节点的地址(实际上,这个单链表是一个动态数组,用于存储整数数据). 根据这种结构,对链表中每个节点的访问需要从列表的头开始,后续节点的地址由当前节点给出. 无论访问表中的哪个节点,都需要从列表的头开始按顺序向后搜索. 因为在链表的末尾没有后续节点,所以它的指针字段为null,也就是写为null
在
上图也显示了这样一层含义: 链表中每个节点的存储地址不是连续的,需要时将每个节点的地址应用到系统中进行分配. 根据内存的现状,系统可以连续分配地址或跳转地址
3.1链表节点数据结构定义
typedef struct Node {
int data;
struct Node *pNext;
} Node_list;
在链表节点的定义中,除了整数成员外c 单向链表,成员pnext是指向完全相同节点类型的指针
在链表节点的数据结构中,一个非常特殊的点是结构中指针字段的数据类型使用未定义的数据类型. 这是C语言中唯一可以先使用后定义的数据结构
3.2链表的创建和输出步骤
1、 创建单链表的过程包括以下步骤:
1. 定义链表的数据结构
2. 创建空表
3. 使用malloc()函数应用将节点分配给系统
4. 分配新节点的空指针成员. 如果是空表,则将新节点连接到头;如果不是,则将新节点连接到表的尾部
5. 判断是否有后续节点需要访问链表. 如果是,请转到步骤3,否则将结束
2、 单链表的输出过程包括以下步骤:
1. 找到页眉
2. 如果是非空表,则输出节点的值成员将退出(如果是空表)
3. 跟踪链表的增长,即查找下一个节点的地址
4. 转到2
3.3程序代码示例:
创建一个单链表来存储正整数,输入0或小于0完成链表的创建,并打印出链表中的值. 方案如下:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-262728-1.html