C语言学习笔记 链表基础

链表
一、链表的应用背景及使用情况:
1、项目数据再添加过程中存在不确定的数,无法在编写程序中分配确定的内存空间;
2、在频繁运用malloc()分配内存;
3、数据块分配的空间不连续;
4、不能用大数据指针或者需要节省使用空间;
为了解决上述问题,C语言中增加了链表。
二、基本形式及原则
链表是一个列表,其中每一项都包含一个元素,这个元素可以描述下一个列表或数据的存储地址。在使用链表过程中,需要运用以下基本指针:
1、空指针(NULL),在stdio.h库中

#include 

2、头指针(head pointer):存放链表的起始地址。
3、next指针(next pointer):存放下一个结构的地址,当没有下一个结构的时候,next pointer 为NULL。
在介绍了上述的指针后,接下来简述一下链表的基本原理:

Created with Raphaël 2.1.0 地址head 地址head 结构体A 结构体A 结构体B 结构体B ... ... end end head指针 存放 结构体A 首地址 结构体A 的next pointer 指向结构体B 结构体B 的next pointer 指向结构体... 结构体... 的next pointer 指向结构体end end的next pointer 指向NULL

三、链表的实现
由于链表的code比较多,为了减少阅读难度,以下是链表的实现的流程图。

Created with Raphaël 2.1.0 START 调用函数库 建立结构体原型 初始化结构体指针(*head=NULL;*prev;*current) main() malloc()缓存数据 判断head==NULL ? head=current current->next=NULL 缓存数据并赋值结构体 调用结构体 释放 malloc空间(free) END prev->next=current yes no

小结
以上是初学C语言的笔记,其中可能存在纰漏或者理解不到位之处,希望大家能够谅解。上面的流程图由于第一次运用程序进行编写,绘制的惨不忍睹~~~~

你可能感兴趣的:(C语言)