// Question 1519: merge two sorted linked lists # include <stdio. h> typedef struct Node {int data; struct Node * next;} Node, * LinkList; void Add (LinkList & list, int value) {Node * node = new Node (); node-> next = NULL; node-> data = value; if (list = NULL) {list = node;} else {LinkList p = list; while (p-> next )! = NULL) {p = p-> next;} p-> next = node;} void Union (LinkList la, LinkList lb, LinkList & lc) {if (la = NULL) {lc = lb; return;} if (lb = NULL) {lc = la; return;} Node * p; if (la-> data> lb-> data) {lc = p = lb; lb = lb-> next ;} else // (la-> data <lb-> data) {lc = p = la; la = la-> next;} while (la & lb) {if (la-> data <= lb-> data) {p-> next = la; la = la-> next;} else {p-> next = lb; lb = lb-> next;} p = p-> next;} p-> next = (la? La: lb) ;}void prit (LinkList & list) {LinkList p = list; while (p-> next! = NULL) {printf ("% d", p-> data); p = p-> next;} printf ("% d \ n", p-> data ); // printf ("\ n");} int main () {int n, m, x; while (scanf ("% d", & n, & m )! = EOF) {if (n = 0 & m = 0) {printf ("NULL \ n"); continue;} LinkList first = NULL, second = NULL, lc = NULL; while (n --) {scanf ("% d", & x); Add (first, x) ;}// prit (first ); while (m --) {scanf ("% d", & x); Add (second, x) ;}// prit (second); Union (first, second, lc); prit (lc);} return 0 ;}