c语言的问题!求大神!在线等!

建立一个学生链表并输出,每个结点包括:学号、姓名、成绩。建立链表时输入成绩为负数就结束。要求:编写建立链表、输出链表分别用函数实现,并在主函数中调用它们。... 建立一个学生链表并输出,每个结点包括:学号、姓名、成绩。建立链表时输入成绩为负数就结束。要求:编写建立链表、输出链表分别用函数实现,并在主函数中调用它们。 展开
 我来答
test_pop
2013-06-28 · TA获得超过376个赞
知道小有建树答主
回答量:332
采纳率:100%
帮助的人:239万
展开全部
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
 char ID[10]; //学号
 char name[20]; //姓名
 float score; //成绩
 struct node *next;
}Lnode;
void Link_print(Lnode *head);

Lnode *Link_creat_tail()
{
 Lnode *phead,*tail, *nhead;
 char pid[10] = {0};
 char sname[20] = {0};
 float num;
 phead = NULL;
 tail = NULL;
 nhead = NULL;
 
 printf("The id:");
 gets(pid);
 printf("The name:");
 gets(sname);
 printf("The score:");
 scanf("%f", &num);
 getchar();
 while(num >= 0)
 {
  phead = (Lnode *)malloc(sizeof(Lnode));
  if(NULL == phead)  //申请失败
  {
   free(phead);  
   perror("malloc error!\n");
   return phead;
  }
  strcpy(phead->ID, pid);
  strcpy(phead->name, sname);
  phead->score = num;
  if(NULL == tail) //第一个节点
  {
   phead->next = NULL;
   nhead = phead;
   tail = phead;
  }
  else    //其他节点
  {
   phead->next = NULL;
   tail->next = phead;
   tail = phead;
  }
  printf("The id:");
  gets(pid);
  printf("The name:");
  gets(sname);
  printf("The score:");
  scanf("%f", &num);
  getchar();
 }
 return nhead;
}
 
void Link_print(Lnode *head)
{
 if(head == NULL)/*入参检查*/
 {
  printf("empty link!\n");
  return ;
 }
 printf("ID  \tname\tscore\n");
 while(head != NULL)
 {
  printf("%s\t%s\t%0.2f\n",head->ID, head->name, head->score);
  head = head->next;
 }
}
int main()
{
 Lnode *head;
 head = Link_creat_tail();
 Link_print(head);
 return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式