1 #include <iostream>
2 using namespace std;
3 typedef struct node
4 {
5 int id;
6 struct node* next;
7 }*L;
8 int main()
9 {
10 L l1=NULL, l2=NULL, l3=NULL;//三个链表
11 int cnt = 0;//结点总数
12 int in;//输入的数据
13 L p = NULL;//临时保存链表头
14 while (1)
15 {
16 scanf("%d",&in);
17 if (in == -1)break;
18 cnt++;
19 if (NULL == l1)
20 {
21 l1 = new struct node;
22 l1->id = in;
23 l1->next = NULL;
24 p = l1;
25 }
26 else
27 {
28 struct node* s = new struct node;
29 s->next = NULL;
30 s->id = in;
31 l1->next = s;
32 l1=l1->next;
33 }
34 }
35 l1=p;
36 while (1)
37 {
38 cin >> in;
39 if (in == -1)break;
40 cnt++;
41 if (NULL == l2)
42 {
43 l2 = new struct node;
44 l2->id = in;
45 l2->next = NULL;
46 p=l2;
47 }
48 else
49 {
50 struct node* s = new struct node;
51 s->next = NULL;
52 s->id = in;
53 l2->next = s;
54 l2 = l2->next;
55 }
56 }
57 l2=p;
58 p=NULL;
59 for (int i = 0; i < cnt; i++)
60 {
61 struct node* s = new struct node;
62 s->next = NULL;
63 if (!l3)
64 {
65 l3= s;
66 p = l3;
67 }
68 else
69 {
70 l3->next = s;
71 l3=l3->next;
72 }
73 }
74 l3 = p;
75 while (l1 || l2)
76 {
77 if (((l1 && l2) &&(l1->id < l2->id)) || (l1 && !l2))
78 {
79 l3->id = l1->id;
80 printf("%d", l3->id);
81 l1 = l1->next;
82 l3 = l3->next;
83 }
84 else if (((l1 && l2) && (l1->id >= l2->id)) || (!l1 && l2))
85 {
86 l3->id = l2->id;
87 printf("%d", l3->id);
88 l2 = l2->next;
89 l3 = l3->next;
90 }
91 if (NULL != l2 || NULL != l1)
92 printf(" ");
93 }
94 l3 = p;
95 if (!l3)printf("NULL");
96 return 0;
97 }