顺序表可以随时存取表中的任意一个元素,但插入和删除需要移动大量元素。
链式存储线性表时,不需要使用地址连续的存储单元,因此插入和删除不需要移动大量元素
而只需修改指针,但也会失去顺序表可随机存取的优点。
单链表的定义
线性表的链式存储又称单链表,它是通过一组任意的存储单元来存储线性表中的数据元素。
为了建立数据元素之间的线性关系,对每个链表结点,除存放元素自身的信息外,还需要存放一个指向其后继的指针。
typedef struct LNode {
ElemType data; // 数据域
struct LNode *next; // 指针域
} LNode, *LinkList
-
小记
typedef关键字——数据类型重命名。例如:typedef int zhengshu;
初始化单链表
-
带头结点的单链表
// 定义单链表结点类型 typedef struct LNode { ElemType data; // 数据域 struct LNode *next; // 指针域 }LNode, *LinkList; bool InitList(LinkList &L) { L = (LNode *) malloc(sizeof(LNode)); // 分配一个头结点 if (L == NULL) { return false; } L->next = NULL; // 头结点指针为空,即创建一个空表 return true; } void test() { LinkList L; // 声明一个指向单链表的指针 InitList(L); } -
不带头结点的单链表
// 定义单链表结点类型 typedef struct LNode { ElemType data; // 数据域 struct LNode *next; // 指针域 }LNode, *LinkList; bool InitList(LinkList &L) { L = NULL; // 空表,无任何结点 return true; } void test() { LinkList L; // 声明一个指向单链表的指针 InitList(L); // 初始化一个空表 }