链表有序合并C++(头插法)

#include <stdio.h>
#include <stdlib.h>

// 单链表的存储结构
typedef struct Node {
    int data;
    struct Node* next;
}Node,*LinkList;
/*
* Node,*LinkList 应用的时候的区别 
* Node: 使用的时候是 Node *
* *LinkList: 使用的时候是 LinkList
* 写的习惯:
*   LinkList: 用来定义函数,和函数参数,定义表或表的指针
*   Node*: 用来定义指针,和开辟空间
*/
 
// 初始化单链表
LinkList InitList () { // 要生成一个链表,注意写法
    LinkList L=(Node *) malloc (sizeof(Node));
    L->next = NULL;
    return L;

 
// 头插法
void creatList(LinkList L) {
    Node * s;
    int data;
    printf("请输入数字,输入-1代表该链表数据输入结束:");
    while(1) {
        scanf("%d",&data);
        if(data == -1) break;
        else {
            s = (Node *) malloc (sizeof(Node));
            s->data = data;
            s->next = L->next;
            L->next = s;
        }
    }
}
 


 // 打印链表
// void printList(Node * head) {
void printList(LinkList L) {
    Node * r;
    // r= head->next;
    r= L->next;
    while(r) {
        printf(" -> %d",r->data);
        r = r->next;
    }
    printf("\n");
}

int main() {
    
    LinkList LA;
    LinkList LB;
    LinkList LC;
    LA = InitList();    // 初始化单链表
    LB = InitList();
    LC = InitList();
    creatList(LA);        // 创建单链表
    creatList(LB);
    creatList(LC);
    printList(LA);      // 输出链表
    printList(LB);      // 输出链表
    printList(LC);      // 输出链表
    return 0;


}
    //有序合并
void MergeList_L(LinkList &LA,LinkList &LB,LinkList &LC){
        pa=LA->next;pb=LB->next;
        LC=LA;
        pc=LC;
        while(pa&&pb){
            if(pa->data <=pb->data){
            pc->next=pa;
                pc=pa;
                pa=pa->next;
            }
            else{
                pc->next=pb;
                pc=pb;
                pb=pb->next;
        }
        }
        pc->next=pa?pa:pb;
        delete LB;
    }
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浅色伊蕾娜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值