55 lines
		
	
	
	
		
			880 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			880 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| 
 | |
| typedef struct node {
 | |
|     int d;
 | |
|     struct node *l, *r;
 | |
| } *N;
 | |
| 
 | |
| void concat(N *X1, N *X2) {
 | |
|     if (*X1 == NULL) *X1 = *X2;
 | |
|     else if (*X2) {
 | |
|         N t = *X1;
 | |
|         while (t->r) t = t->r;
 | |
|         t->r = *X2;
 | |
|         (*X2)->l = t;
 | |
|     }
 | |
| }
 | |
| 
 | |
| N new_node(int d) {
 | |
|     N n = (N)malloc(sizeof(struct node));
 | |
|     n->d = d;
 | |
|     n->l = n->r = NULL;
 | |
|     return n;
 | |
| }
 | |
| 
 | |
| void insert(N *h, int d) {
 | |
|     N n = new_node(d);
 | |
|     if (!*h) *h = n;
 | |
|     else {
 | |
|         N t = *h;
 | |
|         while (t->r) t = t->r;
 | |
|         t->r = n;
 | |
|         n->l = t;
 | |
|     }
 | |
| }
 | |
| 
 | |
| void print(N h) {
 | |
|     while (h) {
 | |
|         printf("%d ", h->d);
 | |
|         h = h->r;
 | |
|     }
 | |
|     printf("\n");
 | |
| }
 | |
| 
 | |
| int main() {
 | |
|     N X1 = NULL, X2 = NULL;
 | |
|     insert(&X1, 1);
 | |
|     insert(&X1, 2);
 | |
|     insert(&X1, 3);
 | |
|     insert(&X2, 4);
 | |
|     insert(&X2, 5);
 | |
|     concat(&X1, &X2);
 | |
|     print(X1);
 | |
|     return 0;
 | |
| }
 | 
