• 两个线性表融合的算法


    问题描述:

    线性表A(a1,a2,...am)和B(b1,b2,...bm),按以下规则融合

    C=(a1,b1,...am,bm,bm,bm+1...bn) 当m<=n时

    C=(a1,b1,...an,bn,an,bn+1...am) 当m>n时

    单链表的长度m,n均未显示存储,C表利用A表和B表中的结点空间构成。

    自己分析在另个地方写了,(未保存。。)代码没书上的好,记录下书上的算法:

    Status ListMerge_L(LinkList &A,LinkList &B, LinkList &C)
    {
     LinkList  pa,pb,qa,qb;
       pa=A->next;
       pb=B->next;
       C=A;
       while(qa&&qb){
       qa=pa;qb=pb;
       pa=pa->next;pb=pb->next;
       qb->next=qa->next;
       qa->next=qb;
       }
       if(!pa) qb->next=pb;
       pb=B;
    free(pb);
    return OK;
    }

    巧妙之处:两个指针的运用,试想一下,如果把顺序打乱会是怎样的结果,刚开始自己思考的时候有想到这个问题,觉得那样插入数据会出错,(开始也没想到要用到两个指针),可是照这样的写法就不会了,代码很精练,融合了很多的思考,学习了。

  • 相关阅读:
    ZOJ
    FZU
    FZU 2231 平行四边形数
    [转载] java的动态代理机制详解
    [转载] 解读ClassLoader
    [转载] 深入了解Java ClassLoader、Bytecode 、ASM、cglib
    MyBatis入门
    Spring入门
    Nginx入门
    Redis入门
  • 原文地址:https://www.cnblogs.com/wj204/p/3034671.html
Copyright © 2020-2023  润新知