面试题26 复杂链表的复制
来源:互联网 发布:星辰0灯尤格萨隆数据 编辑:程序博客网 时间:2024/05/22 17:57
题目:
请实现函数ComplexListNode(LinkNode head),复制一个复杂链表。在复杂链表中,出了有Next指针意外,还有一个Sibling指向链表中的任意节点或者Null,节点定义如下:
public class LinkNode{public int data;public LinkNode next;public LinkNode subLing;}
输入:
头插法的单链表序列(4,3,2,1)
输出:
4321
解题思路:
1、复制链表到单链表序列的后面
2、辅助Sibling的值
3、把一个链表分解成两个
Java实现代码:
public static void main(String[] args) {// TODO Auto-generated method stubLinked linked=new Linked();LinkNode node1=new LinkNode(4);LinkNode node2=new LinkNode(3);LinkNode node3=new LinkNode(2);LinkNode node4=new LinkNode(1);node1.subLing=node3;node1.subLing=node1;linked.insertFirst(node1);linked.insertFirst(node2);linked.insertFirst(node3);linked.insertFirst(node4);linked.display(ComplexListNode(linked.header));}private static LinkNode ComplexListNode(LinkNode node){cloneNode(node);setCloneNodeSiblin(node);return ReconnectNode(node);}//复制链表到后面private static void cloneNode(LinkNode header){if(header==null){return;}LinkNode temp=header;while(temp!=null){LinkNode cloneNode=new LinkNode();cloneNode.data=temp.data;cloneNode.next=temp.next;cloneNode.subLing=null;cloneNode.next=temp.next;temp.next=cloneNode;temp=cloneNode.next;}}//设置节点sibling值private static void setCloneNodeSiblin(LinkNode header){if(header==null){return;}LinkNode temp=header;while(temp!=null){LinkNode cloneNode=temp.next;if(temp.subLing!=null){cloneNode.subLing=temp.subLing.next;}temp=cloneNode.next;}}//分个两个链表private static LinkNode ReconnectNode(LinkNode head){LinkNode cloneheader=null;LinkNode temp=head;LinkNode cloneNode=null;if(temp!=null){cloneheader=cloneNode=temp.next;temp=cloneNode.next;}while(temp!=null){cloneNode.next=temp.next;cloneNode=cloneNode.next;temp=cloneNode.next;}return cloneheader;}
0 0
- 【面试题】复杂链表的复制
- 面试题:复杂链表的复制
- 面试题26:复杂链表复制
- 面试题26:复杂链表的复制
- [剑指offer][面试题26]复杂链表的复制
- 剑指offer 面试题26复杂链表的复制
- 【剑指offer】面试题26:复杂链表的复制
- 剑指Offer:面试题26 复杂链表的复制
- 面试题26 复杂链表的复制
- 《剑指Offer》面试题26:复杂链表的复制
- 面试题26复杂链表的复制
- 剑指offer面试题26-复杂链表的复制
- 面试题26:复杂链表的复制
- 剑指offer-面试题26:复杂链表的复制
- 剑指Offer----面试题26:复杂链表的复制
- 面试题26 复杂链表的复制
- 面试题26:复杂链表的复制
- 剑指offer 面试题26 复杂链表的复制
- 获得路径
- windows下eclipse搭建android_ndk开发环境
- 图像滤波算法之guide filter导向滤波
- XMPPFramework整合
- java注解生成xml和包含CDATA问题
- 面试题26 复杂链表的复制
- EventBus使用详细讲解,结合示例
- MultiDex与热修复实现原理
- MySQL事件调度器详解
- (MVC)jquery+ajax上传文件
- PPT动画教程:字幕式动画
- MAC OS X环境下配置APACHE+PHP+MYSQL+PHPMYADMIN
- 装机员PE制作U盘启动视频教程
- 多旋翼-加速度计耦合机体运动加速度处理方案