思路比较简单,但相对应代码也比较长,共有七十行

若您有改进的建议,欢迎与我交流


参考代码:

#include<iostream>

using namespace std;

struct  Node

{

int number, mark;

Node* next;

};

Node* a_head = NULL;

Node* b_head = NULL;

Node* result = NULL;

void Insert(int num, int mk,Node*&head) {

Node *temp = new Node();

temp->number = num;

temp->mark = mk;

temp->next = head;

head = temp;

}

void Print(Node* head)

{

while (head != NULL)

{

if (head->mark == -10000) { 

head = head->next;

continue; 

}

cout << head->number << " " << head->mark<<endl;

head = head->next;

}

}

void Insert2(Node*& head, Node* &result)

{

Node* heads = result;

Node* temp = heads;

while (head != NULL)

{

temp = heads;

while (true) {

if (head->number < temp->next->number) {

Node* p = new Node();

p->mark = head->mark;

p->number = head->number;

p->next = temp->next;

temp->next = p;

head = head->next;

break;

}

else if (head->number > temp->next->number) {

temp = temp->next;

}

}

}

}

int main()

{

int a_n, b_m;

cin >> a_n >> b_m;

int num, mk;

for (int i = 0; i < a_n; i++)

{

cin >> num >> mk;

Insert(num, mk, a_head);

}

for (int i = 0; i < b_m; i++)

{

cin >> num >> mk;

Insert(num, mk, b_head);

}

Insert(100000000, -10000, result);

Insert(-1, -10000, result);

Insert2(a_head, result);

Insert2(b_head, result);

Print(result);

return 0;

}


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论