1. 程式人生 > >(二)單鏈接表的實現之從尾部插入節點

(二)單鏈接表的實現之從尾部插入節點

(二)單鏈接表的實現之從尾部插入節點

從尾部插入節點構建一個簡單的列表什麼是頭節點

從尾部插入節點

從尾部插入節點從尾部插入節點
  如上圖所示,只要將建立的節點的pNext指標指向下一節點地址即可:pHeader->pNext = New;
  從尾部插入節點分成兩個步驟:

 

  • 找到連結串列的最後一個節點;
  • 將新的節點和原來的最後一個節點連結起來。
 1/*
2 *pH : 表示連結串列的頭指標
3 *new: 新節點的首地址
4 */

5void insert_tail(struct node *pH,strtuct node *new
)

6
{
7    struct node *p = pH;        //node定義 見上一章節
8    while(NULL != p -> pNext)
9    {
10        p = p -> pNext;
11
    }
12    p -> pNext = new;
13}

構建一個簡單的列表

 1#include <stdio.h>
2#include <string.h>
3#include <stdlib.h>
4struct node
5{

6    int data;
7    struct node
 *pNext;

8};
9struct node *create_node(int data);//實現見上一章
10void insert_tail(struct node *pH,strtuct node *new);
11int main()
12
{
13    struct node *pHeader = create_node(1);
14    insert_tail(pHeader ,create_node(2));
15    insert_tail(pHeader ,create_node(3));
16    printf("node1 data: %d.\n",pHeader->data);
17    printf("node2 data: %d.\n",pHeader->pNext->data);
18    printf("node2 data: %d.\n",pHeader->pNext->pNext->data);
19}

什麼是頭節點

  連結串列把頭指標指向的第一個節點作為頭節點使用。頭節點有兩個特點:它緊跟在頭指標後面;頭節點的資料部分是空的(或者儲存連結串列節點數),指標部分指向第一個有效節點。
  頭節點和其他節點不同,頭節點在建立頭指標時一併建立並和頭指標關聯起來。後面真正的節點用節點新增函式新增。
  連結串列的頭節點不是必須的。有無頭節點在一些演算法處理上有些不同。比如插入節點、刪除節點、遍歷節點。

有無頭節點有無頭節點