02-线性结构1 两个有序链表序列的合并 (15 分)

  1. typedef struct Node *PtrToNode;
    struct Node * 是oldname,PtrToNode是newname
    struct Node *定义的变量指的是 指向.struct Node的变量【指针变量】
  2. 该节点
 struct Node {
            ElementType Data; /* 存储结点数据 */
            PtrToNode   Next; /* 指向下一个结点的指针 */
        };

代码如下:

List Merge( List L1, List L2 ){
    List pa,pb,pc,L;
    L = (List)malloc(sizeof(struct Node)); //malloc返回void* 类型指针,它可以通过类型转换强制转换为任何其它类型的指针
    //如果在C++中,可以直接用new来分配内存,可以自动识别内存大小,并分配同类型的指针
    pa = L1->Next;
    pb = L2->Next;
    pc = L;
    while(pa && pb){
        if(pa->Data <= pb->Data){
                pc->Next = pa;
                pc = pc->Next;
                pa = pa->Next;
        }else{
                pc->Next = pb;
                pc = pc->Next;  //移动pc向后
                pb = pb->Next; //移动pc向后
        }
    }
    if(pa)
        pc->Next = pa;
    else
        pc->Next = pb;
    L1->Next = NULL;
    L2->Next = NULL; //空链表
    return L;
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值