1、单链表
单链表的定义
线性表的链式存储又称单链表,它是指任意一组存储单元来存储线性表中的数据元素。
data(数据域) | next(指针域) |
---|
typedef struct LNode{
ElemType data; //数据域
struct LNode *next;//指针域
}LNode, *LinkList;
通常用头指针来标识一个单链表,如单链表L,头指针为NULL时为空表。单链表在第一个结点前附加一个结点,称为头结点。头结点的数据域可以不设任何值,也可以存储表长等相关信息。
头结点和头指针的区分:
不管带不带头结点,头指针始终指向链表的第一个结点。
引入头结点可以带来两个优点:
1)由于开始结点的位置被存放在头结点的指针域,所以在链表的第一个位置上的操作和在表中的其他位置的操作是一致的,无须特殊处理。
2)无论链表是否为空,头指针都指向头结点的非空指针,因此空表和非空表也得到了统一。
单链表上基本操作的实现
1)采用头插法建立单链表
LinkList List_HeadInsert(LinkList &L){
LNode *s;
int x;
L=(LinkList)malloc(sizeof(LNode));//创建头结点
L->next=NULL;//初始空链表
scanf("%d",&x);
while(x!=9999){
//输入9999标识结束
s=(LNode*)malloc(sizeof(LNode));/