单链表插入新节点的函数实现

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 //定义结点结构体
 4 typedef struct student
 5 {
 6     int num;        //学号
 7     int score;      //分数
 8     char name[20];  //姓名
 9     struct student *next;//指针域
10 }STU;
11  
12 void link_creat_head(STU **p_head,STU *p_new)
13 {
14     STU *p_mov = *p_head;
15     if(*p_head == NULL)    //当第一次加入链表为空时,head执行p_new
16     {
17         *p_head = p_new;
18         p_new->next=NULL;
19     }
20     else //第二次及以后加入链表
21     {
22         while(p_mov->next!=NULL)
23         {
24             p_mov=p_mov->next;    //找到原有链表的最后一个节点
25         }
26  
27         p_mov->next = p_new;    //将新申请的节点加入链表
28         p_new->next = NULL;
29     }
30 }
31  
32 int main()
33 {
34     STU *head = NULL,*p_new = NULL;
35     int num,i;
36     printf("please input linked_list initial num:\n");
37     scanf("%d",&num);
38     for(i = 0; i < num;i++)
39     {
40         p_new = (STU*)malloc(sizeof(STU));//申请一个新节点
41         printf("Please input Student No, Score, Name:\n"); //给新节点赋值
42         scanf("%d %d %s",&p_new->num,&p_new->score,p_new->name);
43  
44         link_creat_head(&head,p_new);    //将新节点加入链表
45     }
46 }

 

posted @ 2022-11-01 17:43  昆山皮皮虾  阅读(57)  评论(0)    收藏  举报