鏈表的頭插法和尾插法


鏈表的頭插法和尾插法

本文的鏈表均是帶頭結點的鏈表。

鏈表可以說是最簡單的鏈式結構,在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     

 希望對大家有所幫助~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM