1,创建尾指针的方式,让尾指针不断往前移动
1 /*头插入创建单链表*/ 2 3 #include<stdio.h> 4 #include<stdlib.h> 5 6 typedef struct Link { 7 int data; 8 struct Link* next; 9 }link; 10 11 12 //头插入的方式初始化链表 13 link* initByHeadInsert() { 14 link* ptail =NULL; //创建尾指针 15 16 //先初始话最后一个结点 17 link* last_node = (link*)malloc(sizeof(link)); 18 last_node->data = 1; 19 last_node->next = NULL; 20 ptail = last_node; //让尾指针指向最后一个结点 21 22 //头插入赋值 23 for (int i = 2; i < 5; i++) { 24 link* new_node = (link*)malloc(sizeof(link)); //申请一个新节点 25 new_node->data = i; //给新节点赋初值 26 new_node->next = last_node; //新节点的指针域是最后一个结点 27 last_node=new_node; //新节点成为最后一个结点 28 29 ptail = new_node; //尾指针指向这个新节点,不断往前移动 30 31 //printf("尾指针指向的值是:%d\n", ptail->data);//2 3 4 32 33 } 34 35 return ptail; //将指向最后一个结点的尾指针返回 36 } 37 38 39 //遍历链表 40 void showLink(link* ptail) { 41 link* tmp = ptail; 42 while (tmp!=NULL) { 43 printf("%d ", tmp->data); 44 tmp = tmp->next; 45 } 46 } 47 48 void main() { 49 printf("头插入赋值的初始化链表为:\n"); 50 link* ptail = initByHeadInsert();; //创建尾指针,获取初始化后的尾指针 51 showLink(ptail); 52 53 }