zoukankan      html  css  js  c++  java
  • 19--复杂链表的复制。

    /*
    
    题目:
        复杂链表的复制。
    struct ComplexListNode
    {
        int m_vlaue;
        ComplexListNode *m_next;
        ComplexListNode *m_pSibling;
    };
    m_next,连接下一个结点,m_pSibling随便链接结点其他节点。
    
    这样复制结点就有难度,一次遍历明显不可能全部解决。
    
    策略:
        第一种方法:
            先复制一遍链表,让m_pnext把结点连接起来。第二轮在复制另一个指针,复杂度为O(n*n);
    
    
        第二种方法:
            先复制一遍链表,然后以空间换时间,用O(n)长的哈希表来存储数据,顺序保存所对应的指针。
            保存m_pSibling指针,然后在循环第二变就可以了。
    
    
        第三种:
            不加入辅助空间的算法。
            (1):按顺序将链表一个一个创建,并且连在之前的结点
            例如:开始链表为ABCDEFG,创建之后的事AaBbCcDdEeFfGg.
            (2):这里举例,如果A指向C。那么必然是a指向c。所以,a指向C的下一个。
            遍历以后,指向该结点指向结点的下个结点。
            (3):分离链表,
            其实就是奇偶分析!从0开始,偶数是院士链表,奇数是克隆链表。
    */
  • 相关阅读:
    Android手势(上,下,左和右的判断)
    我爱意甲
    程序员特有的9个坏习惯
    我爱英超
    VS2010快捷键总结(一)
    C#中导出Excel总结
    MessageDAL
    GDI+ 绘图总结
    .net中绑定日期时,只显示年月日的做法
    Vb线程控制
  • 原文地址:https://www.cnblogs.com/hgonlywj/p/4842570.html
Copyright © 2011-2022 走看看