pta题解

pta题解

习题2.4 递增的整数序列链表的插入 (15分)

在这里插入图片描述
这道题先申请一个空间然后把数据存进去,然后从头开始遍历,如果比当前遍历到的小,那么就插在它的前面。通过q,和l两个指针,l一直往下遍历,然后更新q,这样会比较容易插入,要注意考虑,可能会一直遍历到最尾部才满足条件

List Insert( List L, ElementType X )
{
    List head=L;
    L=L->Next;
    List p=(List)malloc(sizeof(struct Node));
    p->Data=X;
    p->Next=NULL;
    List q=head;
    while(L->Data<X)//循环遍历
    {
        q=L;//更新q
        L=L->Next;//l指针往后移动
        if(L->Next==NULL)
        {
            L->Next=p;
            return head;
        }
    }
    p->Next=L;
    q->Next=p;
    return head;
}

习题2.5 两个有序链表序列的合并 (15分)

在这里插入图片描述
这道题本来我没有思路,以为要新建一个链表,后来看了别人的题解才有了思路,这道题就是建立一个头结点,然后比较两个链表,小的就插进去,然后向后移,然后继续比较,直到有一条链的指针为空了就停止,这时候还需要判断两条链是不是都插进去了,有可能有一条因为数据都比另一条大,所以就还会剩一些数字没插进去。

List Merge( List L1, List L2 )
{
    List L,p,w,q;
    w=L1->Next;
    q=L2->Next;
    L=(List)malloc(sizeof(List));
    p=L;
    while(w&&q)
    {
        if(w->Data<q->Data)
        {
            p->Next=w;
            p=p->Next;
            w=w->Next;
        }
        else
        {
            p->Next=q;
            p=p->Next;
            q=q->Next;
        }
    }
    if(w)
    {
        p->Next=w;
    }
    if(q)
    {
        p->Next=q;
    }
    L1->Next=NULL;
    L2->Next=NULL;
    return L;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值