两个有序单链表合并成一个有序单链表

#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;

}

  • 26
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值