解题思路:


拆分一下需求:分为,创建链表,合并链表,排序链表,打印链表,主函数输入以及调用一共5个功能,分模块进行完成。


参考代码:

#include<bits/stdc++.h>
using namespace std;
typedef struct LNode {
	int id;
	int score;
	struct LNode *next;
} LNode,*PtrNode;
//SWAP函数
void swap(int *a,int *b) {
	int temp;
	temp=*a;
	*a=*b;
	*b=temp;
}
//创建
PtrNode creat_list(int n) {
	PtrNode L,p,q;
	L=(LNode *)malloc(sizeof(LNode));
	L->next=NULL;
	q=L;
	for(int i=0; i<n; i++) {
		p=(LNode *)malloc(sizeof(LNode));
		cin>>p->id>>p->score;
		p->next=NULL;
		q->next=p;
		q=p;
	}
	return L;
}
//打印
void print_list(PtrNode L) {
	LNode *p;
	p=L->next;
	while(p) {
		cout<<p->id<<' '<<p->score<<endl;
		p=p->next;
	}
}
//合并
PtrNode merge_list(PtrNode s1,PtrNode s2) {
	if(s1==NULL||s2==NULL)
		return NULL;
	PtrNode temp=s1;
	while(temp->next!=NULL) {
		temp=temp->next;
	}
	PtrNode foll=s2;
	temp->next=foll->next;
	free(foll);
	return s1;
}

//=============插入排序==================//
void insertSort(PtrNode mylist) {
	if((mylist -> next == NULL) || (mylist -> next -> next == NULL)) {
		return;
	}
	LNode * head, * p1, * prep1, * p2, * prep2, * temp;
	head = mylist;
	prep1 = head -> next;
	p1 = prep1 -> next;
	//prep1和p1是否需要手动后移
	bool flag;

	while(p1 != NULL) {
		flag = true;
		temp = p1;
		//由于是单向链表,所以只能从头部开始检索
		for(prep2 = head, p2 = prep2 -> next; p2 != p1; prep2 = prep2 -> next, p2 = p2 -> next) {
			if(p2 -> id > p1 -> id) {
				p1 = p1 -> next;
				prep1 -> next = p1;
				prep2 -> next = temp;
				temp -> next = p2;
				flag = false;
				break;
			}
		}
		//手动后移prep1和p1
		if(flag) {
			prep1 = prep1 -> next;
			p1 = p1 -> next;
		}
	}
}

int main() {
	PtrNode L1,L2,L;
	int n,m;
	cin>>n>>m;
	L1=creat_list(n);
	L2=creat_list(m);
	L=merge_list(L1,L2);
	insertSort(L);
	print_list(L);
	return 0;
}


点赞(0)
 

0.0分

5 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 2 条评论

SinzoL 2年前 回复TA
swap是不是没用QWQ
SinzoL 2年前 回复TA
思路清晰呀