为下列代码添加注释void Addpnode phead 增加学生信息函数编写 pnode p=phead; int i=0; struct Student stu; 学生结构体 int loc; 插入结点的位置 printf请输入插入学生的位置; scanfd&loc; whileNULL!=p&&iloc-1 p=p-pnext; i++; ifNUL
/* 函数名:Add 功能:向链表中插入一个新的学生信息结点 参数:phead,链表的头结点指针 返回值:无 */ void Add(pnode phead) { pnode p=phead; //定义指针p指向头结点 int i=0; //计数器i初始化为0 struct Student stu; //定义一个学生结构体变量stu int loc; //插入结点的位置 printf("请输入插入学生的位置:"); //提示用户输入插入位置 scanf("%d",&loc); //读入插入位置 while(NULL!=p&&i<loc-1) //循环查找要插入位置的前一个结点 { p=p->pnext; //指针p指向下一个结点 i++; //计数器i加1 } if(NULL==p||i>loc) //如果没有找到插入位置或者位置不合法 { printf("插入结点的位置不存在!\n"); //提示用户插入位置不存在 return; //退出函数 } printf("你将在第%d个学生后面插入一个学生\n",loc-1); //提示用户插入位置正确 printf("请输入第%d个学生的姓名:",loc); //提示用户输入学生姓名 scanf("%s",stu.Name); //读入学生姓名 printf("请输入第%d个学生的学号:",loc); //提示用户输入学生学号 scanf("%d",&stu.Num); //读入学生学号 printf("请输入第%d个学生的计算机成绩:",loc); //提示用户输入学生计算机成绩 scanf("%f",&stu.Computer); //读入学生计算机成绩 printf("请输入第%d个学生的高数成绩:",loc); //提示用户输入学生高数成绩 scanf("%f",&stu.Math); //读入学生高数成绩 printf("请输入第%d个学生的大英成绩:",loc); //提示用户输入学生大英成绩 scanf("%f",&stu.English); //读入学生大英成绩 stu.Total=stu.Computer+stu.Math+stu.English; //计算学生总分 stu.Ave=stu.Total/3.0f; //计算学生平均分 pnode pnew=(pnode)malloc(sizeof(node)); //为新结点分配内存 if(NULL==pnew) //如果分配内存失败 { printf("动态内存分配失败,程序终止!\n"); //提示用户分配内存失败 exit(-1); //退出程序 } pnew->st=stu; //将新结点的数据域赋值为新学生信息 pnode q=p->pnext; //定义指针q指向插入位置的下一个结点 p->pnext=pnew; //将插入位置的前一个结点指向新结点 pnew->pnext=q; //将新结点指向插入位置的下一个结点
原文地址: https://www.cveoy.top/t/topic/fX3O 著作权归作者所有。请勿转载和采集!