1300 - C语言程序设计教程(第三版)课后习题11.8

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

已有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

C语言解答

#include<stdio.h>
void main()
{
	int m,n,i,j,a[100],b[100],temp;
	scanf("%d%d",&n,&m);
	for(i=0;i<m+n;i++)
	{
		scanf("%d%d",&a[i],&b[i]);
	}
	for(i=0;i<m+n;i++)
	{
		for(j=i+1;j<m+n;j++)
		{
			if(a[i]>a[j])
			{
				temp=a[i],a[i]=a[j],a[j]=temp;
			    temp=b[i],b[i]=b[j],b[j]=temp;
			}
		}
	}
	for(i=0;i<m+n;i++)
	{
		printf("%d %d\n",a[i],b[i]);
	}
}

C++解答

#include<stdio.h>
#include<stdlib.h>
struct student
{
    int id;
    int sore;
};
int cmp(const void *a,const void *b)
{
    student *sa=(student  *)a;
    student *sb=(student *)b;
    return (*sa).id-(*sb).id;
}
int main()
{
    student stu[1000];
    int i,a,b;
    scanf("%d%d",&a,&b);
    for(i=0;i<a+b;i++)
        scanf("%d%d",&stu[i].id,&stu[i].sore);
    qsort(stu,a+b,sizeof(student),cmp);
    for(i=0;i<a+b;i++)
        printf("%d %d\n",stu[i].id,stu[i].sore);
    return 0;
}

Java解答



import java.util.Collections;

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Main {
   private static Scanner s = new Scanner(System.in) ;
   
   public static void main(String[] args) {
	  List<Stu> list1 = new LinkedList<Stu>() ;
	  List<Stu> list2 = new LinkedList<Stu>() ;
	  int N = s.nextInt() ;
	  int M = s.nextInt() ;
	  for (int i = 0; i < N; i++) {
		 int num = s.nextInt() ;
		 int score = s.nextInt() ;
		 Stu s = new Stu() ;
		 s.num = num ;
		 s.score = score ;
		 list1.add(s) ;
		 
	  } 
	  for (int i = 0; i < M; i++) {
		  int num = s.nextInt() ;
	      int score = s.nextInt() ;
	      Stu s = new Stu() ;
	      s.num = num ;
	      s.score = score ;
	      list2.add(s) ;
	  }
	  
	   list1.addAll(list2) ;
	   Collections.sort(list1);
	   
	   for (Stu stu : list1) {
		 System.out.println(stu.num+" "+stu.score);
	   }
   }
}

class Stu implements Comparable{
	int num ;
	int score ;
	@Override
	public int compareTo(Object o) {
        Stu stu = (Stu) o ;
        if(num>stu.num){
        	return 1 ;
        }else if(num==stu.num){
		    return 0;
        }else return -1 ;
	}
}