問題 B: C語言-鏈表排序

題目鏈接http://codeup.cn/problem.php?cid=100000607&pid=1

題目描述
已有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 <cstdio>
#include <cstdlib>

struct node {
	int id;
	int data;
	node* next;
};

void insert(node* head, node* q) {
	node* p = head;
	while(p->next != NULL && p->next->id < q->id) {
		p = p->next;
	}
	q->next = p->next;
	p->next = q;
}

int main() {
	int n, m, id, data;
	while(scanf("%d%d", &n, &m) != EOF) {
		node* head = new node;
		head->next = NULL;
		for(int i = 0; i < n + m; i++) {
			scanf("%d%d", &id, &data);
			node* q = new node;
			q->id = id;
			q->data = data;
			insert(head, q);
		}
		node* p = head->next;
		while(p != NULL) {
			printf("%d %d\n", p->id, p->data);
			p = p->next;
		}
	}
}
發佈了186 篇原創文章 · 獲贊 9 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章