建立一个带有头结点且结点数为n的链表并将之初始化,通常有两种方法:1、每次开辟一个新结点并将之接在链表末尾处
2、每次开辟一个新结点并将之接在链表开头处,即接在头结点之后。
方法一在每次开辟新结点后还要用一个循环来确定链表的尾结点并将新结点接入,效率不高,时间复杂度位O(n^2),方法二则只需直接将新结点接在头结点之后,时间复杂度位O(n),效率较之方法一高了许多,具体实现如下:
void CreateList_L(LinkList &L,int n)
{
L=(LinkList )malloc(sizeof(LNode));
L->next=NULL;//先建立一个带头结点的单链表
for(i=n;i>0;--i)
{
p=(LinkList )malloc(sizeof(LNode));
scanf(&p->data);
p->next=L->next;//插入到表头
L->next=p;
}
}