Swift-复杂链表的复制

题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点).
核心代码:
<pre><code>`
func randomListNodeClone(headNode:inout RandomListNode?) {
var pHead:RandomListNode? = headNode
// A->B->C 拷贝 A->A1->B->B2->C->C1
while pHead != nil {
let cloneNode:RandomListNode = RandomListNode()
cloneNode.data = (pHead?.data)! + "1"
cloneNode.next = pHead?.next
pHead?.next = cloneNode

        pHead = cloneNode.next
    }
    // sibling 拷贝
    var sHead:RandomListNode? = headNode
    while sHead != nil {
        let nextNode:RandomListNode? = sHead?.next
        if nextNode != nil {
            nextNode!.sibling = sHead?.sibling?.next
        }
        sHead = sHead?.next?.next
    }
    
    // 拆分链表
    let cloneHead:RandomListNode? = headNode?.next
    headNode = cloneHead
    var beginNode:RandomListNode? = cloneHead
    while beginNode != nil {
        let temp = beginNode?.next?.next
        if beginNode?.next != nil {
            beginNode?.next = temp
        }
        beginNode = temp
    }
}`</code></pre>

测试代码:
<pre><code>`

var randomHead:RandomListNode = RandomListNode()
randomHead.data = "A"

var randomNode1:RandomListNode = RandomListNode()
randomNode1.data = "B"
randomHead.next = randomNode1

var randomNode2:RandomListNode = RandomListNode()
randomNode2.data = "C"
randomNode1.next = randomNode2

var randomNode3:RandomListNode = RandomListNode()
randomNode3.data = "D"
randomNode2.next = randomNode3

var randomNode4:RandomListNode = RandomListNode()
randomNode4.data = "E"
randomNode3.next = randomNode4

randomHead.sibling = randomNode2
randomNode1.sibling = randomNode4
randomNode3.sibling = randomNode1

var pHead:RandomListNode? = randomHead
var clone:RandomListClone = RandomListClone()
clone.randomListNodeClone(headNode: &pHead)
while pHead != nil {
print("FlyElephant-随机节点--(pHead!.data)---👬--(pHead!.sibling?.data)")
pHead = pHead?.next
}`</code></pre>


FlyElephant.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 作为一个资深的新手程序员😂,链表这些既基础又深奥的东西是日常工作中并不常见,但是却非常重要,所以就总结一下链表的简...
    Clark_new阅读 4,545评论 4 12
  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 5,400评论 0 12
  • 大学的时候不好好学习,老师在讲台上讲课,自己在以为老师看不到的座位看小说,现在用到了老师讲的知识,只能自己看书查资...
    和珏猫阅读 1,565评论 1 3
  • 本文内容:1、 什么是链表?2、 链表共分几类?3、 链表的 C 实现! 总表:《数据结构?》 工程代码 Gith...
    半纸渊阅读 40,220评论 0 54
  • 是否有那么一瞬间,你觉得这并不是你想要的生活,冷眼旁观的对那张没有半点留念的脸说:我要辞职。当这个想法诞生时,恭喜...
    赤寻阅读 397评论 0 1

友情链接更多精彩内容