已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号 升序排序
/*已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号
升序排序*/#include <stdio.h>
#include <stdlib.h>
typedef struct student{long num;float score;struct student *next;
}student,*Student;//创建链表
Student creat()
{Student s;int n = 0;Student p1,p2;p1 = p2 = (Student) malloc(sizeof(student));printf("请输入学生学号和成绩:\n");scanf("%ld %f",&p1->num,&p1->score);while(p1->num != 0){n = n + 1;if(n == 1) s = p1;else p2->next = p1;p2 = p1;p1 = (Student) malloc(sizeof(student));scanf("%ld %f",&p1->num,&p1->score); }p2->next = NULL;return s;
} //输出链表
void print(Student s)
{Student p;printf("\nNow,The records are:\n");p = s;if(s != NULL){do{printf("%ld %5.1lf\n",p->num,p->score);p = p->next;}while(p != NULL);}
}
//排列函数
Student sort(Student a,Student b)
{Student p,q;p = a;long t1;float t2;while(p->next != NULL){p = p->next;}p->next = b;//将b链表接到a链表后面 p = a;while(p){q = p->next;while(q){if(p->num > q->num){t1 = p->num;p->num = q->num;q->num = t1;t2 = p->score;p->score = q->score;q->score = t2;}q = q->next; }p = p->next;}}int main()
{Student a;Student b;a = creat();b = creat();print(a);print(b);printf("排列完成后:");sort(a,b);print(a);
}
谭浩强C程序设计(第四版)p330第10题
建立两个没有头结点的链表,用的是课本上的方法。
合并时,将b链表放在a链表后面,然后进行排序,只交换数据,不交换指向
已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号 升序排序相关推荐
- 习题 9.10 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。
C程序设计(第四版) 谭浩强 习题9.10 个人设计 习题 9.10 已有a,b两个链表,每个链表中的结点包括学号.成绩.要求把两个链表合并,按学号升序排列. 代码块: #include <st ...
- 有两个链表a,b,设结点包括学号,姓名。从a链表中删去与b链表中有相同学号的那些结点。
#include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct linknode ...
- 已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列。
#include <stdio.h> #include <stdlib.h> #define LEN sizeof(struct student) #define NULL 0 ...
- 链表:递归中删除结点不发生断链
这是使用递归(使用引用)进行删除节点的内存变化 void Del_x(LinkList &L, int x) {//引用if (L == NULL) {//空结点return;}LNode * ...
- mysql两表左关联_mysql中一张表LEFT JOIN 左关联两张表语句
先看实例 代码如下 复制代码 SELECT p.price, pd.name, m.manufacturers_name FROM (products p LEFT JOIN products_des ...
- 删除按升序排列的单链表中的所有重复元素
删除单链表中的所有重复元素 题目 解决思路 代码 说明 题目 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中没有重复出现的数字. ...
- ACMNO.30 C语言-宏交换 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。
题目描述 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参.输出已交换后的两个值. 输入 两个数,空格隔开 输出 交换后的两个数,空格隔开 样例输入 1 2 样例输出 2 ...
- 37. 两个链表的第一个公共结点
为什么80%的码农都做不了架构师?>>> 题目:输入两个链表,找出它们的第一个公共结点. 思路:先遍历两个链表得出它们各自的长度,然后让长链表先走,直到长度和短的一致,然后两个 ...
- [剑指offer] 两个链表的第一个公共结点
本文首发于我的个人博客:尾尾部落 题目描述 输入两个链表,找出它们的第一个公共结点. 解题思路 如果两个链表存在公共结点,那么它们从公共结点开始一直到链表的结尾都是一样的,因此我们只需要从链表的结尾开 ...
最新文章
- springboot 加载配置信息(静态)
- 计算机教授技术追踪劫匪,打脸 911警察
- python跟踪脚本进度(类似bash-x)
- (String)、toString、String.valueOf的区别
- php无符号整数转有符号整数,PHP中把有符号整型转换为无符号整型方法_PHP教程...
- vue使用iview Timeline 时间轴不显示问题
- 一切都是骗局 Windows 8并不是很牛X
- leetcode 刷题指南
- 七种主流平面板式介绍
- Thinkpad 笔记本VMware Workstation 安装虚拟机出现“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”解决方法
- mysql+last_query_cost_辛星简译MySQL中的last_query_cost
- Installing third-party firmware on x3-55 letv (by quqi99)
- 做uni-app时,遇到后台返回base64码,将base64码转为图片,但是图片没有显示出来的解决方法
- debian8文件服务器,debian 8 下部署开发环境
- SecureCRT 如何快速执行常用命令
- 电脑音量100后还嫌小怎么办
- box-shadow 属性 详解
- Windows 2008 R2 SP1更新补丁报错解决建议
- 5W1H分析法 什么是5W1H分析法?
- ip地址转换数字函数 iton_IP 地址转换(在点分格式和数字之间相互转换)