解题思路:先建立两个链表存储信息,在合并两个链表,在冒泡排序
注意事项:冒泡的时候注意判断条件
参考代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct link_list{
int id;
int grades;
struct link_list *prev, *next;
}link_list_t;
link_list_t *request_link_list(const int id, const int grades)
{
link_list_t *node;
node=malloc(sizeof(link_list_t));
node->id=id;
node->grades=grades;
node->prev=node;
node->next=node;
return node;
}
link_list_t *request_head_link_list(const int id, const int grades)
{
link_list_t *node;
node=malloc(sizeof(link_list_t));
node->prev=node;
node->next=node;
return node;
}
void insert_link_list(link_list_t *head_node, link_list_t *list_node)
{
list_node->next=head_node->next;
list_node->prev=head_node;
head_node->next->prev=list_node;
head_node->next=list_node;
}
void display_link_list(link_list_t *head_node)
{
link_list_t *pos;
for(pos=head_node->next; pos!=head_node; pos=pos->next)
{
printf("%d %d\n", pos->id, pos->grades);
}
}
void init_link_list(link_list_t *head_node, link_list_t *head2_node)
{
head2_node->next->prev=head_node;
head2_node->prev->next=head_node->next;
head_node->next->prev=head2_node->prev;
head_node->next=head2_node->next;
}
void sort_link_list(link_list_t *head_node)
{
link_list_t *pos1, *pos2, *n;
int tmp, op;
for(pos1=head_node->prev; pos1!=head_node; pos1=pos1->prev)
{
for(pos2=head_node->next; pos2!=pos1; pos2=pos2->next)
{
n=pos2->next;
if(pos2->id>n->id)
{
tmp=pos2->id;
pos2->id=n->id;
n->id=tmp;
op=pos2->grades;
pos2->grades=n->grades;
n->grades=op;
}
}
}
}
int main(void)
{
int cmd1, cmd2;
int id, grades;
scanf("%d %d", &cmd1, &cmd2);
link_list_t *head_node, *head2_node, *list1, *list2;
head_node=request_head_link_list(-1, -1);
head2_node=request_head_link_list(-1, -1);
for(int i=0; i<cmd1; i++)
{
scanf("%d %d", &id, &grades);
list1=request_link_list(id, grades);
insert_link_list(head_node, list1);
}
for(int j=0; j<cmd2; j++)
{
scanf("%d %d", &id, &grades);
list2=request_link_list(id, grades);
insert_link_list(head2_node, list2);
}
init_link_list(head_node, head2_node);
sort_link_list(head_node);
display_link_list(head_node);
return 0;
}
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复