C語言實現單鏈表創建和遍歷

創建單鏈表有多種方式,我這裏介紹從尾部添加新節點的創建方式。

創建的過程:

1.定義節點的數據結構

c語言中鏈表節點是用結構體來實現,創建之前要明白數據域需要什麼類型的數據。例如:

 

//定義鏈表中的節點
typedef struct node{
   int data;            //鏈表中的數據
   struct node * p_next;//指向下一節點的指針
}Node,*pNode;

2.動態創建節點

 

創建節點的過程中要用到三個指針:

p_head:指向頭節點的指針

p_tail:指向當前尾節點的指針

pNew:指向新增節點的指針

就像數組一樣,我們能通過數組名或數組的第一個元素的地址來找到該數組,鏈表是通過頭指針來找到的,所以創建的第一步要

定義一個頭指針,接着我們要讓p_tail指針指向頭結點(一開始頭節點就是尾節點),動態創建一個節點,並用pNew指針來指向,同時把新節點加到鏈表末尾(即p_tail的指向的下一節點爲pNew指向的節點),把新節點指向的節點賦爲空(此時新節點加上後就變爲最後一個節點了,所以它指向的下一節點爲空),設置尾節點爲新節點(即p_tail=pNew),再添加新節點是,重複上一步驟。

創建的代碼實現如下:

pNode CreateList(){
 int i, len;
 //開闢頭結點
 pNode p_head = (pNode) malloc(sizeof(Node));
 pNode p_tail = p_head;
 p_tail->p_next = NULL;
 printf("請輸入節點的個數:");
 scanf("%d",&len);
 for(i = 0;i < len; i++){
    pNode pNew = (pNode) malloc(sizeof(Node));//開闢新節點
    scanf("%d", &pNew->data);
    p_tail->p_next = pNew;//將尾節點指向新節點
    pNew->p_next = NULL;//新節點應該指向NULL
    p_tail = pNew;//當前尾節點爲新節點
 }
  return p_head;
}

 

順序遍歷鏈表:

void TraverseList(pNode h){
  pNode p = h->p_next;
  while(p != NULL){
    printf("%d\n",p->data);
    p = p->p_next;
  }
}

測試代碼:

int main()
{
pNode test = CreateList();
TraverseList(test);
return 0;
}
//輸入1 2 3
//輸出1 2 3

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章