C程序设计(第四版) 谭浩强 习题9.10 个人设计

习题 9.10 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。

代码块:

#include <stdio.h>
#include <stdlib.h>
struct Student{                                             //定义结构体Studentint num;float score;Student *next;
};
void input(Student *stu, int n);                            //定义输入函数
Student *merge(Student *stu1, Student *stu2, int m);        //定义合并函数,返回指针值
void print(Student *stu);                                   //定义输出函数
int main()
{Student *a=(Student*)malloc(3*sizeof(Student));Student *b=(Student*)malloc(2*sizeof(Student));input(a, 3);                                            //调用输入函数,生成a链表input(b, 2);                                            //调用输入函数,生成b链表print(merge(a, b, 3));                                  //调用输出函数,参数为合并函数返回指针值system("pause");return 0;
}
//输入函数
void input(Student *stu, int n)
{int i;Student *p;for (p=stu, i=0; p<stu+n; p++, i++){printf("Please enter No.%d student info; ", i+1);scanf("%d %f", &p->num, &p->score);i==n-1 ? p->next=NULL : p->next=&stu[i+1];}
}
//合并函数
Student *merge(Student *stu1, Student *stu2, int m)
{stu1[m-1].next=stu2;                         //将a链表最末尾的next指向b链表首地址Student *p, *q, temp;for (p=stu1; p!=NULL; p=p->next)             //排序法对链表总体排序,注意,交换时只交换结构体变量中的学号和成绩,next指针不交换改变,为了保持原链表的链接顺序。for (q=p->next; q!=NULL; q=q->next)if (p->num>q->num){temp.num=p->num;p->num=q->num;q->num=temp.num;temp.score=p->score;p->score=q->score;q->score=temp.score;}return stu1;
}
//输出函数
void print(Student *stu)
{Student *p;for (p=stu; p!=NULL; p=p->next)printf("%d %.2f\n", p->num, p->score);
}

习题 9.10 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。相关推荐

  1. 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号 升序排序

    /*已有a,b两个链表,每个链表中的结点包括学号.成绩.要求把两个链表合并,按学号 升序排序*/#include <stdio.h> #include <stdlib.h> t ...

  2. 已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列。

    #include <stdio.h> #include <stdlib.h> #define LEN sizeof(struct student) #define NULL 0 ...

  3. 有两个链表a,b,设结点包括学号,姓名。从a链表中删去与b链表中有相同学号的那些结点。

    #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct linknode ...

  4. mysql两表左关联_mysql中一张表LEFT JOIN 左关联两张表语句

    先看实例 代码如下 复制代码 SELECT p.price, pd.name, m.manufacturers_name FROM (products p LEFT JOIN products_des ...

  5. 习题7.10 使用割线法求解方程

    %习题7.10 使用割线法求解方程 %参数为要求的精度 %返回值s为函数要求的解 function s=Secant_method(jingdu) %给一开始的迭代点赋值 % x(k-1)前前点 qq ...

  6. 习题 4.10 企业发放的奖金根据利润提成。。。

    感谢 @墨瑾空城染青衣 提出的错误地方,现已修改. C程序设计(第四版) 谭浩强 习题4.10 个人设计 习题 4.10 企业发放的奖金根据利润提成.利润I低于或等于100000元的,奖金可提0.1: ...

  7. 设有6个有序表A、B、C、D、E、F,分别含有10、35、40、50、60和200个数据元素,各表中元素按升序排列。要求通过5次两两合并,将6个表最终合并成1个升序表,并在最坏情况下比较的总次数达到最

    设有6个有序表A.B.C.D.E.F,分别含有10.35.40.50.60和200个数据元素,各表中元素按升序排列.要求通过5次两两合并,将6个表最终合并成1个升序表,并在最坏情况下比较的总次数达到最 ...

  8. c语言程序中的算数表达式X Y-Z,C语言程序设计实验教程习题1~10.docx

    C语言程序设计实验教程习题1~10 第一章一.选择题1.最早开发C语言是为了编写下面那一种操作系统( C) A .Windows B.DOS C.UNIX D.Linux2.下面哪一项不属于C语言的特 ...

  9. 华为android系统显示器,华为出货量首次超越三星成全球第一;小米10已可体验Android 11系统;三星Galaxy Tab S7将采用120hz屏幕...

    华为出货量首次超越三星成全球第一 在提到余承东的时候,我们总能想起网友起的一个别名 -- 余大嘴.原因是此前余承东曾经多次发表大家看起来是「吹牛」的言论.不过最近这两年,大家发现,他吹过的牛,好像都实 ...

最新文章

  1. 搭建web服务器,发布站点
  2. 十大python开发软件-2017年最棒的七个Python图形应用GUI开发框架
  3. 解读zookeeper的配置项
  4. 一个简易实用的web权限管理模块的应用与实现
  5. lombok插件:Data自动get/set方法, Slf4j实现Logger的调用
  6. JAXB众所周知的秘密
  7. 互联网晚报 | 8月11日 星期三 | 苏炳添成为小米品牌代言人;联想企业购正式上线;中国电信A股IPO战略配售结果出炉...
  8. 【LeetCode】【HOT】49. 字母异位词分组(递归)
  9. APScheduler——定时任务框架
  10. Gif动图体积过大如何缩小?仅需三步教你在线压缩gif
  11. win7旗舰版/专业版黑屏后怎样再次永久激活?
  12. python的pyecharts(群图乱舞)可视化神器
  13. 【时间复杂度】你还在担心时间复杂度太高吗?
  14. 使用手机远程控制电脑
  15. 大数据开发实战教程目录
  16. SEO、SSR、Nuxt.js
  17. 名词解释第二十五讲:TPS
  18. STM32F103C8T6和C6T6的区别
  19. Solidworks2008 API 开发的问题。
  20. Python--猜水果游戏

热门文章

  1. Linux 内核构建
  2. 青云上NAS服务器挂的操作(他们的文档)
  3. 授时服务器物理隔离,GPS授时设备配备的必要性及其特点
  4. QTP .net插件
  5. 头歌平台数据可视化-第五关时间空间数据的可视化——等高线图
  6. 多点触摸:MultiPointTouchArea
  7. 基于matlab的神经网络实践
  8. matlab画时间 频率图,在matlab中画频数图和累积频率图
  9. 关于Bootstrap的一些使用
  10. 一次线上服务器cpu使用率超过1250%的排查与优化