当前位置:   article > 正文

2020-10-24(链表习题 6-1学生成绩链表处理)_本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分

本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分

6-1 学生成绩链表处理 (20分)

本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。

函数接口定义:

  1. struct stud_node *createlist();
  2. struct stud_node *deletelist( struct stud_node *head, int min_score );

函数createlist利用scanf从输入中获取学生的信息,将其组织成单向链表,并返回链表头指针。链表节点结构定义如下:

  1. struct stud_node {
  2. int num; /*学号*/
  3. char name[20]; /*姓名*/
  4. int score; /*成绩*/
  5. struct stud_node *next; /*指向下个结点的指针*/
  6. };

输入为若干个学生的信息(学号、姓名、成绩),当输入学号为0时结束。

函数deletelist从以head为头指针的链表中删除成绩低于min_score的学生,并返回结果链表的头指针。

裁判测试程序样例:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct stud_node {
  4. int num;
  5. char name[20];
  6. int score;
  7. struct stud_node *next;
  8. };
  9. struct stud_node *createlist();
  10. struct stud_node *deletelist( struct stud_node *head, int min_score );
  11. int main()
  12. {
  13. int min_score;
  14. struct stud_node *p, *head = NULL;
  15. head = createlist();
  16. scanf("%d", &min_score);
  17. head = deletelist(head, min_score);
  18. for ( p = head; p != NULL; p = p->next )
  19. printf("%d %s %d\n", p->num, p->name, p->score);
  20. return 0;
  21. }
  22. /* 你的代码将被嵌在这里 */

输入样例:

  1. 1 zhang 78
  2. 2 wang 80
  3. 3 li 75
  4. 4 zhao 85
  5. 0
  6. 80

输出样例:

  1. 2 wang 80
  2. 4 zhao 85

作者

C课程组

单位

浙江大学

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB


  1. struct stud_node *createlist()
  2. {
  3. struct stud_node *head,*tail,*s;
  4. head=(struct stud_node*)malloc(sizeof(struct stud_node));
  5. head->next=NULL;tail=head;
  6. while(1)
  7. {
  8. s=(struct stud_node*)malloc(sizeof(struct stud_node));
  9. scanf("%d",&s->num);
  10. if(s->num==0)break;
  11. scanf("%s",s->name);
  12. scanf("%d",&s->score);
  13. s->next=NULL;
  14. tail->next=s;
  15. tail=s;
  16. }
  17. return head;
  18. }
  19. struct stud_node *deletelist( struct stud_node *head, int min_score )
  20. {
  21. struct stud_node *p,*n;
  22. p=head->next;
  23. while(p!=NULL)
  24. {
  25. if(p->score<min_score)
  26. {
  27. n=head;
  28. while(n->next!=p)
  29. n=n->next;
  30. n->next=p->next;
  31. free(p);
  32. }
  33. p=p->next;
  34. }
  35. return head->next;
  36. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/469137
推荐阅读
相关标签
  

闽ICP备14008679号