前文《【数据结构】链表元素查找、插入和删除-线性表的链式存储》记过了链表的元素查找、插入和删除,本文记链表的创建。
目录
头插法和尾插法概述
链表的创建有两种方法,一种是头插法(下图),另一种是尾插法。
头插法是直接将头结点的下一个节点交给新节点,然后头结点指向新节点。
尾插法是直接让单链表的最后一个节点的指向新节点,然后让新节点指向NULL。
尾插法时,千万不要忘了最后一个节点指向NULL,否则会出大错!无论什么方法干什么,任何时候单链表的最后一个节点都要指向NULL。(注意说的是单链表哈,循环链表和双链表不是这样滴)
代码
头插法
本代码的链表是带头结点的。用随机函数生成链表数据。
status CreateList_LkHead(LinkList& L,int n)//头插法
{
LinkList q; //自由节点,用来放插入节点
int i;
if (!L)//如果链表没有初始化就先初始化
{
L = (LinkList)malloc(sizeof(LNode)); //创建一个头结点
if (!L)exit(ERROR);
L->next = NULL;//先建立一个头结点并指向NULL
}
//printf("please in put %d inttype data\n", n);
for (i = n; i > 0; i--)//头插法是逆序的
{
q = (LinkList)malloc(sizeof(LNode));//每次都重新申请
if (!q)exit(ERROR);
//scanf_s("%d", &q->data);
q->data = rand()%100;//填充数据
q->next = L->next;
L->next = q;
}
return OK;
}
需要注意的是,先创建一个头结点并将其指向