一、链表
- 链式存储结构:在逻辑上连续,存储时物理上不连续,但要用一定的手段使得在逻辑上连续。 这个手段就是指针。
- 链表:以链式存储结构存储的线性表,它是基于指针实现。
- 这里需要知道指针指向的实质:地址赋值。
- 数据+下一个数据的地址=结点----》结构体类型。

链表的分类

相关概念
i.头指针:保存第一个数据地址的指针。
ii.首元结点:保存线性表第一个数据的结点。
iii.头结点:里面没有数据,仅仅保存了首元结点的地址。
为什么要有头结点?
头结点是链表中位于第一个实际数据结点之前的辅助结点;头结点确保所有结点(包括首元结点)都有前驱结点,避免针对首元结点的特殊处理。例如在插入或删除操作时,无需区分是否在链表头部操作,代码逻辑更一致。
例如:


1)单链表:单链表就是只能单向寻找数据
i.操作:增删改查等。
ii.单链表的实现
定义一个空单链表
typedef struct{
elemtype data;//数据域
struct node* next;//指针
}node,*linklist;
//linklist=node* 强调该指针是头结点
// node*q 强调该指针是一个普通指针
初始化链表
//初始化一个带头结点的空链表
linklist initlist{
linklist l=(node*)malloc(sizeof(node));
if(l==NULL){
printf("内存分配失败。\n");
}else{
l->next=NULL;
}
return l;
}
增操作
头插法:插到头结点后面的数据(结点),插入的新结点是首元结

5154

被折叠的 条评论
为什么被折叠?



