| |
| 现有一串已按分数高低记录好的成绩, |
| 现在要求你在不打乱原来顺序的基础上 |
| |
| 插入一部分数据、删除一部分数据,并输出。(用链表操作) |
| |
| 输入 |
| 输入分3部分: |
| |
| 第一部分为已排序好的成绩,#结束; |
| |
| 第二部分为要增加的成绩,#结束: |
| |
| 第三部分为要删除的成绩,#结束; |
| |
| 输出 |
| 输出修改后的成绩 |
| |
| 样例输入 |
| LI 95 |
| WANG 90 |
| SUN 85 |
| ZHAO 80 |
| QIAN 70 |
| # |
| ZHAN 85 |
| JIN 60 |
| # |
| QIAN |
| # |
| 样例输出 |
| LI 95 |
| WANG 90 |
| SUN 85 |
| ZHAN 85 |
| ZHAO 80 |
| JIN 60 |
| */ |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| int main() |
| { |
| struct stu |
| { |
| char name[20]; |
| int score; |
| struct stu *next; |
| } *head = NULL, |
| *pnow, |
| *p, |
| |
| *pre; |
| |
| char buf[20]; |
| |
| |
| int size_stu = sizeof(struct stu); |
| |
| |
| |
| pnow = (struct stu *)malloc(size_stu); |
| |
| p = head = pnow; |
| |
| scanf("%s %d", &pnow->name, &pnow->score); |
| |
| |
| while (scanf("%s", &buf) != EOF) |
| { |
| if (buf[0] == '#') |
| { |
| break; |
| } |
| else |
| { |
| |
| pnow = (struct stu *)malloc(size_stu); |
| |
| p->next = pnow; |
| p = pnow; |
| |
| strcpy(pnow->name, buf); |
| scanf("%d", &pnow->score); |
| } |
| } |
| p->next = NULL; |
| |
| |
| while (scanf("%s", &buf) != EOF) |
| { |
| if (buf[0] == '#') |
| { |
| break; |
| } |
| else |
| { |
| pnow = (struct stu *)malloc(size_stu); |
| strcpy(pnow->name, buf); |
| scanf("%d", &pnow->score); |
| |
| p = head->next; |
| |
| pnow->next = NULL; |
| |
| if (pnow->score > head->score) |
| { |
| pnow->next = head; |
| head = pnow; |
| } |
| else |
| { |
| |
| pre = head; |
| |
| |
| |
| while (p != NULL && pnow->score <= p->score) |
| { |
| pre = p; |
| p = p->next; |
| } |
| pnow->next = p; |
| pre->next = pnow; |
| } |
| } |
| } |
| |
| while (scanf("%s", &buf) != EOF) |
| { |
| if (buf[0] == '#') |
| break; |
| else |
| { |
| if (!strcmp(head->name, buf)) |
| { |
| p = head; |
| head = head->next; |
| } |
| else |
| { |
| p = head->next; |
| pre = head; |
| |
| while (p != NULL && strcmp(p->name, buf) != 0) |
| { |
| |
| p = p->next; |
| pre = pre->next; |
| } |
| pre->next = p->next; |
| p->next = NULL; |
| } |
| free(p); |
| } |
| } |
| |
| p = head; |
| for (; p != NULL;) |
| { |
| printf("%s %d\n", p->name, p->score); |
| p = p->next; |
| } |
| |
| |
| |
| |
| |
| return 0; |
| } |
| |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了