鏈表的創建可使用尾插法,也可使用頭插法,頭插法就是從頭節點開始,向前擴展節點,最後生成帶頭節點的單向鏈表,使得內容與輸入相反。函數
鏈表的定義與(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中沒有數據。