1. 程式人生 > >分別用頭插法和尾插法建立有頭結點和無頭結點的單鏈表

分別用頭插法和尾插法建立有頭結點和無頭結點的單鏈表

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;