面試題17-合併兩個有序的鏈表


  
  
  
  
# -*- coding: utf-8 -*-"""Created on Thu Mar  2 11:35:11 2017@author: zzpp220"""class LinkList:    def __init__(self,val=None,link=None):        self.val=val        self.link=linkclass MergeLink:    def mergeLink(self,lst1,lst2):        if lst1==None:##先給出遞歸到最細狀況或者特殊狀況式的返回值            return lst2        elif lst2==None:            return lst1        else:                        Head_Total=None#在給出從最大的對象開始如何產生下一級的要遞歸的對象            if lst1.val <=lst2.val:                Head_Total=lst1                Head_Total.link=self.mergeLink(lst1.link,lst2)#z在本級對下一級對象應用遞歸,直到最細的一級知足最開始定義的狀況,跳回上一級,而且返回遞歸的結果共上一層使用            else:                Head_Total=lst2                Head_Total.link=self.mergeLink(lst1,lst2.link)#對下一級對象應用遞歸,而且使用下一級遞歸返回的結果        return Head_Total#跳回本級以後,就要定義通常操做,用下一級返回值要作怎麼的使用,做爲通常狀況下本次遞歸的返回值。if __name__=='__main__':    solution=MergeLink()    l0=LinkList(7)      l1=LinkList(6,l0)    l2=LinkList(5,l1)    l3=LinkList(3,l2)    lst1=LinkList(1,l3)#1-->3-->5-->6-->7        r0=LinkList(8)      r1=LinkList(6,r0)    r2=LinkList(6,r1)    r3=LinkList(4,r2)    rst1=LinkList(2,r3)#2-->4-->6-->6-->7    solution.mergeLink(lst1,rst1)    print lst1.link.link.link.val


附件列表

相關文章
相關標籤/搜索