6-4 学生成绩链表处理(20 分)
新博客: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 分)相关推荐
- 2-2 学生成绩链表处理 (20 分)
2-2 学生成绩链表处理 (20 分) 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表:另一个将成绩低于某分数线的学生结点从链表中删除. 函数接口定义: struct stud_node * ...
- 6-4 学生成绩链表处理 (20分) 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。 函数接口定义: ```cpp struct stu
6-4 学生成绩链表处理 (20分) 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表:另一个将成绩低于某分数线的学生结点从链表中删除. 函数接口定义: struct stud_node *c ...
- PTA: 6-4建立学生信息链表(20分)
大一下半期数据结构 数据结构题目集 pta:建立学生信息链表 本题要求实现一个将输入的学生成绩组织成单向链表的简单函数. 函数接口定义: void input(); 该函数利用scanf从输入中获取学 ...
- PAT 1004 成绩排名 (20 分)
1004 成绩排名 (20 分) 读入 n(>0)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 ...
- C语言-学生成绩链表处理
题目详情 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表:另一个将成绩低于某分数线的学生结点从链表中删除. 文章目录 一.输入样例 二.输出样例 三.代码展示 四.思路体现 五.难点记录 一 ...
- 6-4 链表拼接 (20分)_数据结构之链表
在面试过程中,数据结构和算法基本上算是研发类岗位必考的部分,而链表基本上又是数据结构中相对容易掌握.而且容易出题的部分,因此我们先整理一下链表部分的经典题目. (声明:以下所有程序都是用java编写) ...
- 6-1 表彰优秀学生(多态) (20分)
学期结束,班主任决定表彰一批学生,已知该班学生数在6至50人之间,有三类学生:普通生,特招运动员,学科专长生,其中学科专长生不超过5人. 主函数根据输入的信息,相应建立GroupA, GroupB, ...
- 6-4 链表拼接 (20分)_青岛喷绘制作公司不愿透露的喷绘布拼接与安装技巧,建议收藏...
当我们走在大街上随时都能看到各种精美的大型户外喷绘广告,精美的画面很具有吸引力. 青岛喷绘制作公司 0532-80796756 那么大的画面,而设备是有限的,通常大型点设备最宽是5米的,其它3米多为主 ...
- c语言奇数值结点链表,习题11-7 奇数值结点链表 (20 分)
本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中奇数值的结点重新组成一个新的链表.链表结点定义如下: struct ListNode { int data; ListNode *next; ...
最新文章
- python猿辅导_如何用数据分析方法剖析“猿辅导”K12课程
- matlab plot画图指定线型和颜色
- linux复制duo文件,自动生成Linux下Makefile全攻略(转)
- IDEA 修改JavaWeb的访问路径
- testmeshpro合批_TextMesh Pro Emoji Align With Text(表情和文字对齐)
- 5.4寸iPhone 12真机曝光:可单手握住的快乐!
- EasyRecovery---视频文件恢复技巧
- ASP.NET 使用C#代码设置页面元素中的样式或属性
- 高性能高并发服务的瓶颈及突破思路
- office图标异常处理
- 了解嵌入式软件开发周期
- 趁年轻,我们干点什么吧
- 记分牌调度算法实现java_动态调度算法:记分牌算法和tomasulo算法
- 四分之一管的直径是多少 气管管径对照
- 小组取什么名字好_有创意的小组名有哪些
- Linux守护进程设计规范及python实现
- Python框架:Django写图书管理系统(LMS)
- Instagram帐户几种不同类型的封号情况及解决方案
- 安装MySql时初始化 MySQL 数据库失败的几个总结
- 现代通信原理5.3: 窄带高斯白噪声