單向鏈表的創建(2)

鏈表的創建可使用尾插法,也可使用頭插法,頭插法就是從頭節點開始,向前擴展節點,最後生成帶頭節點的單向鏈表,使得內容與輸入相反。函數

鏈表的定義與(1)中相同,這裏只介紹鏈表的創建函數。spa

 1 LNode *create(int n)
 2 {
 3     int m;
 4     LNode *head=(LNode *)malloc(sizeof(LNode));
 5     LNode *tail=(LNode *)malloc(sizeof(LNode));
 6     LNode *p;
 7     head->next=NULL;
 8     for(int i=0;i<n;i++)
 9     {
10         p=(LNode *)malloc(sizeof(LNode));
11         scanf("%d",&m);
12         p->data = m;
13         p->next=head->next;
14         head->next=p;
15     }
16     return head;
17 }

開始必定要爲頭節點申請內存空間,並賦值他的後繼節點。code

例如,咱們輸入1,2,3,4,5blog

輸入1時內存

12行:p節點賦值1class

13行:p節點指向head節點的後繼(此時爲空),即p指向了空擴展

14行:head指向p鏈表

這樣造成了,head(空)指向p,p指向空的鏈表next

輸入2時數據

12行:p節點賦值2

13行:p節點(2)指向(1)節點

14行:head節點指向p節點

 

這樣每次保證head節點指向最新插入的節點,造成了倒序,head中沒有數據。

相關文章
相關標籤/搜索