1、链表的定义
链表是由一连串的结构(称为结点)组成的,其中每个节点包含指向链表中下一个结点的指针(除最后一个结点为空指针),其中每个结点可以含有若干个存储数据的数据域。
2、优缺点
相比较于数组,使用链表结构可以克服数组需要预先知道数据大小的缺点,可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。
单链表的结构图:
3、单链表的C语言实现
(1)类型声明
#include <stdlib.h>
#include <stdbool.h>
#define DATA_TYPE int
struct node;
typedef struct node* List;
typedef struct node* Position;
List New_List(List head,DATA_TYPE X); //新建链表
bool is_empty(List head); //判定该链表是否为空
bool is_last(Position P); //判定位置P是否为链表的末尾
Position Find(DATA_TYPE X, List head); //查找元素,返回指向该元素的指针
void Delete(DATA_TYPE X, List head); //删除元素
void Insert(DATA_TYPE X, List head); //插入元素
List Delete_list(List head); //删除链表
struct node
{
DATA_TYPE data;
Position next;
};
(2)新建链表操作