高效地初始化一個連結串列
建立一個帶有頭結點且結點數為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;
}
}