Swift-復(fù)雜鏈表的復(fù)制

題目:輸入一個(gè)復(fù)雜鏈表(每個(gè)節(jié)點(diǎn)中有節(jié)點(diǎn)值,以及兩個(gè)指針,一個(gè)指向下一個(gè)節(jié)點(diǎn),另一個(gè)特殊指針指向任意一個(gè)節(jié)點(diǎn)).
核心代碼:
<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-隨機(jī)節(jié)點(diǎn)--(pHead!.data)---??--(pHead!.sibling?.data)")
pHead = pHead?.next
}`</code></pre>


FlyElephant.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 作為一個(gè)資深的新手程序員??,鏈表這些既基礎(chǔ)又深奧的東西是日常工作中并不常見,但是卻非常重要,所以就總結(jié)一下鏈表的簡...
    Clark_new閱讀 4,492評論 4 12
  • 1 序 2016年6月25日夜,帝都,天下著大雨,拖著行李箱和同學(xué)在校門口照了最后一張合照,搬離寢室打車去了提前租...
    RichardJieChen閱讀 5,373評論 0 12
  • 大學(xué)的時(shí)候不好好學(xué)習(xí),老師在講臺上講課,自己在以為老師看不到的座位看小說,現(xiàn)在用到了老師講的知識,只能自己看書查資...
    和玨貓閱讀 1,548評論 1 3
  • 本文內(nèi)容:1、 什么是鏈表?2、 鏈表共分幾類?3、 鏈表的 C 實(shí)現(xiàn)! 總表:《數(shù)據(jù)結(jié)構(gòu)?》 工程代碼 Gith...
    半紙淵閱讀 40,189評論 0 54
  • 是否有那么一瞬間,你覺得這并不是你想要的生活,冷眼旁觀的對那張沒有半點(diǎn)留念的臉說:我要辭職。當(dāng)這個(gè)想法誕生時(shí),恭喜...
    赤尋閱讀 389評論 0 1

友情鏈接更多精彩內(nèi)容