分別用頭插法和尾插法建立有頭結點和無頭結點的單鏈表
1、頭插法建立無頭結點的連結串列
連結串列無頭結點,則在建立連結串列的時候,使頭指標L=NULL;
用頭插法插入元素的時候,首先要判斷頭指標是否為空;
如果頭指標為空,則將新插入的結點賦值給頭指標,即L=p;然後將新結點的頭指標指向NULL;
如果頭指標不為空,則將新結點指向首結點,再將首結點指向新結點;即p->next=L; L=p;
int CreateHeadLinklist(Linklist &L,int n)
{
Linklist p;
L=malloc(sizeof(Linklist));
if(!L)
{
return 0;
}
L=NULL;
for(int i=1;i<=n;i++)
{
p=malloc(sizeof(Linklist));
if(L=NULL)
L=p;
p->next=NULL;
}
else
{
p->next=L;
L=p;
}
retrun 1;
}
2、尾插法建立無頭結點的連結串列
首先設定一個尾指標tail指向最後一個結點,初始化時將tail指向L;即tail=L;
然後判斷連結串列是否為空,為空的時候直接將新結點賦值給L,即L=p;
如果連結串列不為空,則將tail->next=p;
最後,將新插入進來的結點的next指向NULL,並把尾指標指向新結點
p->next=NULL;tail=p;
int CreateTailLinklist(Linklist &L,int n)
{
Linklist tail,p;
L=malloc(sizeof(Linklist));
if(!L)
{
return 0;
}
L=NULL;
tail=L;
if(L=NULL)
{
L=p;
}else
{
tail->next=p;
}
p=NULL;
tail=p;
return 1;
}
3、頭插法建立有頭結點的連結串列
有頭結點的連結串列,在建立連結串列時,初始化連結串列指標L->next=NULL;與無頭結點的區別是,無頭結點的判斷連結串列為空是根據L->next=NULL;
用頭插法插入元素時,判斷連結串列是否為空,若為空,則將新結點的next指向空作為表尾;
若不為空,則將新結點的next指向頭結點的next指向;再將頭結點的next指向p;即p->next=L->next;
有頭結點,則在建立連結串列的時候,使頭指標L->next=NULL;