解题思路:
注意事项:
参考代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct student
{
int id;
int score;
struct student *next;
}link,*LinkNode;
void init(LinkNode *L); //初始化列表
void create(LinkNode *L,int n); //根据输入的个数创建列表
void concat(LinkNode *L1,LinkNode *L2);//将俩列表连接
void sort(LinkNode *L1);//排序
void print(LinkNode L);//打印输出
/*
下面这一段本来是想将每个列表中的值一次比较
将最小的连接在第三个链表后,后来发现,每个链表不是顺序排序的
后来想写个排序函数,将两个链表排完序在来做排序,发现太多余了
陷入了僵局,看到大佬写的,直接将链表合并后,比较,然后交换其值
嗯。。。。。
*/
// LinkNode sort(LinkNode *L1,LinkNode *L2)
// {
// LinkNode L3;
// init(&L3);
// link *p,*q;
// p = (*L1)->next;
// q = (*L2)->next;
// while(p && q)
// {
// if(p->id = q->id)
// {
// L3->next = p;
// L3 = p;
// p = p->next;
// }else{
// L3->next = q;
// L3 = q->next;
// q = q->next;
// }
// }
// if(p)
// {
// L3->next = p;
// }else{
// L3->next = q;
// }
// return L3;
// }
int main()
{
LinkNode L1,L2;
int n,m;
init(&L1);
init(&L2);
scanf("%d %d",&n,&m);
create(&L1,n);
create(&L2,m);
// print(L1);
// print(L2);
concat(&L1,&L2);
sort(&L1);
// printf("+++++++++\n");
print(L1);
// LinkNode L3;
// L3 = sort(&L1,&L2);
// printf("++++++++++++++++\n");
// print(L3);
return 0;
}
void init(LinkNode *L)
{
*L = (LinkNode)malloc(sizeof(link));
(*L)->next = NULL;
}
void create(LinkNode *L,int n)
{
int id,score;
LinkNode r = *L;
for(int i = 0;i < n;i++)
{
link *p;
scanf("%d %d",&id,&score);
p = (link*)malloc(sizeof(link));
p->id = id;
p->score = score;
r->next = p;
r = p;
}
r->next = NULL;
}
void concat(LinkNode *L1,LinkNode *L2)
{
LinkNode p,q;
p = (*L1)->next;
while(p)
{
q = p;
p = p->next;
}
q->next = (*L2)->next;
free(*L2);
}
void sort(LinkNode *L1)
{
LinkNode p,q;
p = (*L1)->next;
for(p;p != NULL;p = p->next)
{
for(q = p;q != NULL;q = q->next)
{
int temp1,temp2;
if(p->id >= q->id)
{
temp1 = p->id; //比较后交换值,成绩也要交换
p->id = q->id;
q->id = temp1;
temp2 = p->score;
p->score = q->score;
q->score = temp2;
}
}
}
}
void print(LinkNode L)
{
LinkNode p = L->next;
while(p)
{
printf("%d %d\n",p->id,p->score);
p = p->next;
}
}
0.0分
0 人评分
淘淘的名单 (C语言代码)答案错误???浏览:593 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:529 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:697 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:664 |
简单的a+b (C语言代码)浏览:524 |
C二级辅导-温度转换 (C语言代码)浏览:720 |
Pascal三角 (C语言代码)浏览:644 |
计算质因子 (C语言代码)浏览:700 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:509 |
C二级辅导-分段函数 (C语言代码)浏览:739 |