C语言程序设计教程(第三版)课后习题11.8 链表合并及操作
来源:互联网 发布:linux日常维护脚本 编辑:程序博客网 时间:2024/05/21 09:22
题目描述
已有a、b两个链表,每个链表中的结点包括学好、成绩。要求把两个链表合并,按学号升序排列。
输入格式
第一行,a、b两个链表元素的数量N、M,用空格隔开。 接下来N行是a的数据 然后M行是b的数据 每行数据由学号和成绩两部分组成
输出
按照学号升序排列的数据
样例输入
2 3
5 100
6 89
3 82
4 95
2 10
样例输出
2 10
3 82
4 95
5 100
6 89
#include<stdio.h>#include<malloc.h>typedef struct student{ int a; int b; struct student *next;} STU;void change(STU *a,STU *b){ a->next=b->next; b->next=a;}int main(){ int m,n; scanf("%d%d",&n,&m); int i,j,k,l; i=n; j=m; STU *q1,*q2,head1,head2,*p; q1=&head1; q2=&head2; while(i--) { p=(STU*)malloc(sizeof(STU)); scanf("%d %d",&p->a,&p->b); q1->next=p; q1=q1->next; } while(j--) { p=(STU*)malloc(sizeof(STU)); scanf("%d %d",&p->a,&p->b); q2->next=p; q2=q2->next; } q1->next=head2.next; STU *x,*y; for(x=head1.next; x!=NULL;x=x->next) for(y=x; y!=NULL;y=y->next) if(x->a>y->a) { int temp; temp=x->a; x->a=y->a; y->a=temp; temp=x->b; x->b=y->b; y->b=temp; } STU *g; g=head1.next; while(g!=NULL) { printf("%d ",g->a); printf("%d\n",g->b); g=g->next; } return 0;}中间使用选择排序操作排序问题,因为单链表的操作,在选择法中没法进行链表地址的交换(或者说比较麻烦)。
- C语言程序设计教程(第三版)课后习题11.8 链表合并及操作
- 1052:C语言程序设计教程(第三版)课后习题11.8
- C语言程序设计教程(第三版)课后习题11.8
- acm编程训练 单向链表 C语言程序设计教程(第三版)课后习题11.8
- 1052: C语言程序设计教程(第三版)课后习题11.5
- 1052: C语言程序设计教程(第三版)课后习题11.5
- 1001: C语言程序设计教程(第三版)课后习题1.5
- 1003: C语言程序设计教程(第三版)课后习题3.7
- 1005: C语言程序设计教程(第三版)课后习题4.9
- 1007: C语言程序设计教程(第三版)课后习题5.5
- 1009: C语言程序设计教程(第三版)课后习题5.7
- 1010: C语言程序设计教程(第三版)课后习题5.8
- 1051: C语言程序设计教程(第三版)课后习题11.5
- C语言程序设计教程(第三版)课后习题5.7
- C语言程序设计教程(第三版)课后习题10.4
- 1002: C语言程序设计教程(第三版)课后习题1.6
- 1003: C语言程序设计教程(第三版)课后习题3.7
- 1004: C语言程序设计教程(第三版)课后习题4.8
- Windows下使用标准Shell接口遍历文件和文件夹(1)
- 皮肤检测算法三种,示例与代码
- C指针原理(12)
- Android TextView分享
- Duplicate entry导致mysql主从复制中断的事故
- C语言程序设计教程(第三版)课后习题11.8 链表合并及操作
- java多线程,将oracle中数据导入到sql到文件(包括大字段转换成字符串)
- PROTO 之函数的使用
- Cmd模式下的入侵技术大全
- error
- 如何增加2.0、3.5的目标框架在VS2010里面
- 从HBase读取数据提交到Solr建立索引
- dos下截取字符串
- Java多线程模式(1)共享互斥