新博客:https://wywwzjj.top/

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

函数接口定义:

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

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

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

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

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

输入样例:

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

输出样例:

2 wang 80
4 zhao 85

下面给出我的代码,欢迎斧正

#include <stdio.h>
#include <stdlib.h>struct stud_node {int    num;char   name[20];int    score;struct stud_node *next;
};struct stud_node *createlist()
{struct stud_node* head = (struct stud_node*)malloc(sizeof(struct stud_node));head->next = NULL;struct stud_node* p = head;int ty;scanf("%d",&ty);while(ty!=0)//尾插法创建链表{p->next = (struct stud_node*)malloc(sizeof(struct stud_node));p = p->next;scanf("%s %d",p->name,&p->score);p->num = ty;p->next = NULL;scanf("%d",&ty);}return head;
}struct stud_node *deletelist( struct stud_node *head, int min_score )
{struct stud_node* p = head;while(p->next != NULL){int flag = 0;if(p->next->score<min_score){struct stud_node* temp = p->next;//printf("%d %d\n",temp->num,temp->score);p->next = temp->next;free(temp);flag = 1;}p = p->next;if(flag)//如果有删除节点,则重新开始,便于删除干净p = head;}return head->next;//最终打印的时候直接从返回的head开始,需要跳过头结点
}int main()
{int min_score;struct stud_node *p, *head = NULL;head = createlist();scanf("%d", &min_score);head = deletelist(head, min_score);for ( p = head; p != NULL; p = p->next )printf("%d %s %d\n", p->num, p->name, p->score);return 0;
}

6-4 学生成绩链表处理(20 分)相关推荐

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

    2-2 学生成绩链表处理 (20 分) 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表:另一个将成绩低于某分数线的学生结点从链表中删除. 函数接口定义: struct stud_node * ...

  2. 6-4 学生成绩链表处理 (20分) 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。 函数接口定义: ```cpp struct stu

    6-4 学生成绩链表处理 (20分) 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表:另一个将成绩低于某分数线的学生结点从链表中删除. 函数接口定义: struct stud_node *c ...

  3. PTA: 6-4建立学生信息链表(20分)

    大一下半期数据结构 数据结构题目集 pta:建立学生信息链表 本题要求实现一个将输入的学生成绩组织成单向链表的简单函数. 函数接口定义: void input(); 该函数利用scanf从输入中获取学 ...

  4. PAT 1004 成绩排名 (20 分)

    1004 成绩排名 (20 分) 读入 n(>0)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 ...

  5. C语言-学生成绩链表处理

    题目详情 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表:另一个将成绩低于某分数线的学生结点从链表中删除. 文章目录 一.输入样例 二.输出样例 三.代码展示 四.思路体现 五.难点记录 一 ...

  6. 6-4 链表拼接 (20分)_数据结构之链表

    在面试过程中,数据结构和算法基本上算是研发类岗位必考的部分,而链表基本上又是数据结构中相对容易掌握.而且容易出题的部分,因此我们先整理一下链表部分的经典题目. (声明:以下所有程序都是用java编写) ...

  7. 6-1 表彰优秀学生(多态) (20分)

    学期结束,班主任决定表彰一批学生,已知该班学生数在6至50人之间,有三类学生:普通生,特招运动员,学科专长生,其中学科专长生不超过5人. 主函数根据输入的信息,相应建立GroupA, GroupB, ...

  8. 6-4 链表拼接 (20分)_青岛喷绘制作公司不愿透露的喷绘布拼接与安装技巧,建议收藏...

    当我们走在大街上随时都能看到各种精美的大型户外喷绘广告,精美的画面很具有吸引力. 青岛喷绘制作公司 0532-80796756 那么大的画面,而设备是有限的,通常大型点设备最宽是5米的,其它3米多为主 ...

  9. c语言奇数值结点链表,习题11-7 奇数值结点链表 (20 分)

    本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中奇数值的结点重新组成一个新的链表.链表结点定义如下: struct ListNode { int data; ListNode *next; ...

最新文章

  1. python猿辅导_如何用数据分析方法剖析“猿辅导”K12课程
  2. matlab plot画图指定线型和颜色
  3. linux复制duo文件,自动生成Linux下Makefile全攻略(转)
  4. IDEA 修改JavaWeb的访问路径
  5. testmeshpro合批_TextMesh Pro Emoji Align With Text(表情和文字对齐)
  6. 5.4寸iPhone 12真机曝光:可单手握住的快乐!
  7. EasyRecovery---视频文件恢复技巧
  8. ASP.NET 使用C#代码设置页面元素中的样式或属性
  9. 高性能高并发服务的瓶颈及突破思路
  10. office图标异常处理
  11. 了解嵌入式软件开发周期
  12. 趁年轻,我们干点什么吧
  13. 记分牌调度算法实现java_动态调度算法:记分牌算法和tomasulo算法
  14. 四分之一管的直径是多少 气管管径对照
  15. 小组取什么名字好_有创意的小组名有哪些
  16. Linux守护进程设计规范及python实现
  17. Python框架:Django写图书管理系统(LMS)
  18. Instagram帐户几种不同类型的封号情况及解决方案
  19. 安装MySql时初始化 MySQL 数据库失败的几个总结
  20. 现代通信原理5.3: 窄带高斯白噪声

热门文章

  1. MATLAB函数——atan(x)和atan2(x)的区别
  2. 【Docker】谷粒商城笔记记录:P104运行ElasticSearch容器
  3. 解决“javac不是内部或外部命令,也不是可运行的程序”问题
  4. leetcode-跳跃游戏系列
  5. 前端基础知识学习之-ShadowDOMLightDOM
  6. idea突然很卡解决办法
  7. 培训公司python
  8. 英文视频字幕生成和翻译工具、AI拟声工具
  9. 刘强东终于向自己的兄弟下手了!
  10. 知识点摘抄:数字后面+UL是什么?