19--复杂链表的复制。
2015-09-27 19:09
246 查看
/* 题目: 复杂链表的复制。 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开始,偶数是院士链表,奇数是克隆链表。 */
相关文章推荐
- 链表排序
- 信息安全系统设计基础第二周学习总结
- 18--二叉树中和为某一值的路径
- machine Learning
- 图解Linux命令之--chgrp命令
- 单链表反转的图示操作
- RadioButton kongleifeng深究
- DirectX11 XNA数学库之矩阵
- 信息安全系统设计基础第三周学习总结—20135227黄晓妍
- 17-- 从上到下打印二叉树,按层打印。
- 16--二叉树的镜像
- java排列
- java 集合介绍
- ThinkPHP--url地址大小写问题
- 15-- 输入两个二叉树A和B,判断B树是否包含于A树。
- 14--合并两个排序的链表
- 14--反转链表
- A child container failed during start
- HTTPD 工作原理
- 图解Linux命令之--lsattr命令