1、什么是链表:
是一种物理存储单元上非连续、非顺序的存储结构。
2、链表的特点
(1)申请的空间可以不连续
(2)链表访问不方便
(3)插入、删除不需要移动元素,比较方便
3、链表的分类
(1)有没有头结点:带头结点的链表和不带头结点的链表,一般使用的是带头结点的链表
(2)指针域是双向还是单项:单项链表和双向链表
(3)尾结点是否指向头结点:循环链表和不循环链表
4、定义链表中结点的数据类型
typedef struct linknode
{
data_type data; //数据域
struct linknode *pNext; //指针域
}Link;
5、根据位置向链表中插入元素
5.1头插法
5.2尾插法
5.3中间插法
5.4显示
//显示
//参数:链表的首地址
//返回值:成功返回ok,失败返回原因
int showLink(Link *pHead)
{
//入参判断
if(NULL == pHead)
{
return LINKNULL;
}
//定义一个结构体,初始化为首节点
Link *pTmp = NULL;
pTmp =pHead->pNext;
//循环遍历,直到pTmp->pNext为空
while(pTmp != NULL)
{
printf("%d\t",pTmp->data);
pTmp = pTmp->pNext;
}
return 0;
}