python解決復雜鏈表的復制


題目如下:輸入一個復雜鏈表(每個節點中有節點值,以及兩個指針,一個指向下一個節點,另一個特殊指針指向任意一個節點),返回結果為復制后復雜鏈表的head。(注意,輸出結果中請不要返回參數中的節點引用,否則判題程序會直接返回空)

思路:第一步在原鏈表的基礎上復制節點,將節點復制在原節點的后面。第二步復制隨機節點。 第三步將新舊鏈表分離。 圖示如下

代碼如下:

#encoding:utf8
class  RandomListNode():
    def __init__(self,x):
        self.label = x
        self.next = None
        self.random = None
class Solution:
    def clone(pHead):
        if pHead == None:
            return None
        #復制節點在原節點之后
        pCur = pHead
        while(pCur != None):
            node = RandomListNode(pCur.label)
            node.next = pCur.next
            pCur.next = node
            pCur = node.next
        #復制random節點
        pCur = pHead
        while(pCur != None):
            if pCur.random != None:
                pCur.next.random = pCur.random.next
            pCur = pCur.next.next
        head = pHead.next
        cur = head
        #將新舊鏈表分離
        pCur = pHead
        while(pCur != None):
            pCur.next = pCur.next.next
            if cur.next != None:
                cur.next = cur.next.next
            cur = cur.next
            pCur = pCur.next
        return head

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM