56 lines
880 B
C
56 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;
|
|
}
|