美文网首页
浙大数据结构 02-线性结构1 两个有序链表序列的合并

浙大数据结构 02-线性结构1 两个有序链表序列的合并

作者: 闲七小 | 来源:发表于2019-10-13 19:33 被阅读0次

题目戳这里
先放代码


    List Merge( List L1, List L2)
    {
    List x;
    x = (List)malloc(sizeof(struct Node));
    List P,Q,L3;
    P = L1->Next;
    Q = L2->Next;
    L3 = x;
    while( P && Q)
    {
        if(P->Data <= Q->Data)
        {
            L3->Next = P;
            L3 = P;
            P = P->Next;
        }
        else
        {
            L3->Next = Q;
            L3 = Q;
            Q = Q->Next;
        }
    }
    L3->Next = Q ? Q:P;
    L1->Next = NULL;
    L2->Next = NULL;
    return x; 
    }

解题思路

访问L1L2的每一个数据,比较当下访问的两个,然后连到指针上,直到L1L2其一为空,就把指针连到不为空的那个上面去就行了

题目的一些隐蔽条件

  1. 返回带头结点的链表头指针
  2. 给的L1L2是带头指针的
  3. 从输出样例可以看到最后的L1L2应为NULL

对代码的一些地方的解释

也许有人会问为什么把地址分配给x后却要用L3去进行后面的操作,其实就是因为题目要求我们返回链表头指针,如果用x,后续代码执行完x变成到了尾部。L3 = x可以让L3x指向同一个地址。其他的应该没什么了,如果有应该也只是c语言相关的用法问题,直接查就行了。我因为只是初中看过一点c,现在刚开始直接学数据结构,视频里好多语句都看不懂比如指针,链表,分配地址都是边看边查边写的(逃

相关文章

网友评论

      本文标题:浙大数据结构 02-线性结构1 两个有序链表序列的合并

      本文链接:https://www.haomeiwen.com/subject/oydkmctx.html