鏈表的頭插法和尾插法
本文的鏈表均是帶頭結點的鏈表。
鏈表可以說是最簡單的鏈式結構,在C語言中,通常用結構體封裝其數據域及指針域作為一個結點。
今天我們說的是鏈表結點的構造方式以及插入方式。
尾插法
1 //尾插法 2 3 void createlistR(LNode *&C,int a[],int n){ 4 LNode *s,*r; 5 int i; 6 C = (LNode*)malloc(sizeof(LNode)); 7 C->next = NULL; 8 r = C; 9 for(i = 0;i<n;i++){ 10 s = (LNode*)malloc(sizeof(LNode)); 11 s->data = a[i]; 12 r->next = s; 13 r = r->next; 14 } 15 r->next = NULL; 16 }
即將節點依次接入鏈表末尾,稱為尾插法
頭插法
為什么要把頭插法放在尾插法后面來講呢,頭插法顧名思義,即每個節點都插入到頭部。稱為頭插法。舉個例子
已知鏈表L,頭插法插入A,B,C
則有下列形式
L->A
L->B->A
L->C->B->A
我們可以發現,運用頭插法建立鏈表,順序是相反的。下面給出具體代碼實現
1 //鏈表頭插法 2 void creatlistF(LNode *&C,int a[],int n){ 3 LNode *s; 4 int i; 5 C = (LNode*)malloc(sizeof(LNode)); 6 C->next = NULL; 7 for(i = 0;i<n;i++){ 8 s = (LNode*)malloc(sizeof(LNode)); 9 s->data = a[i]; 10 11 s->next = C->next; // *** 12 C->next = s; 13 } 14 } 15 16 /* 講解 ***內容 17 為什么要 s->next = C->next; 18 解:因為是頭插法,C指向的頭結點是不動的,由題意知,此時C->next = NULL 19
希望對大家有所幫助~
