#include <stdio.h>
#include <stdlib.h>
typedef struct lnode {
int data; // 数据域
struct lnode* next; // 指针域,指向下一个节点
} lnode, * linklist;
void insertdata(linklist l) {
int x;
linklist r;
linklist s;
r = l;
scanf_s("%d", &x);
while (x != 99) {
s = (linklist)malloc(sizeof(lnode));
s->data = x;
s->next = NULL;
r->next = s;
r = s;
scanf_s("%d", &x);
}
}
linklist integrate(linklist l1,linklist l2) {
linklist l3;
l3 = (linklist)malloc(sizeof(lnode));
linklist p1, p2, p3;
p1 = l1->next;
p2 = l2->next;
p3 = l3;
while (p1 != NULL && p2 != NULL) {
if (p1->data <= p2->data) {
p3->next = p1;
p1 = p1->next;
}
else {
p3->next = p2;
p2 = p2->next;
}
p3 = p3->next;
}
p3->next = p1 == NULL ? p2 : p1;
return l3;
}
void printlist(linklist l) {
linklist p;
p = l;
while (p != NULL) {
printf("%d->", p->data);
p = p->next;
}
printf("null\n");
}
int main() {
linklist la;
la = (linklist)malloc(sizeof(lnode));
la->next = NULL;
printf("请输入la单链表的元素:");
insertdata(la);
printf("la单链表为:\n");
printlist(la->next);
linklist lb;
lb = (linklist)malloc(sizeof(lnode));
lb->next = NULL;
printf("请输入lb单链表的元素:");
insertdata(lb);
printf("lb单链表为:\n");
printlist(lb->next);
linklist lc;
lc = integrate(la, lb);
printf("合并后lc单链表为:\n");
printlist(lc->next);
return 0;
}