zoukankan      html  css  js  c++  java
  • 两个线性表融合的算法

    问题描述:

    线性表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;
    }

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

  • 相关阅读:
    文件处理--文件操作
    三元运算
    alex 推荐的书
    python字符串、列表和字典的说明
    运算符
    while else语句
    格式化输出
    数据类型-元组
    数据类型-集合
    字符串
  • 原文地址:https://www.cnblogs.com/wj204/p/3034671.html
Copyright © 2011-2022 走看看