1. 程式人生 > >Python-劍指offer(15,16)反轉連結串列,合併兩個連結串列

Python-劍指offer(15,16)反轉連結串列,合併兩個連結串列

題目:輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。

環境:Python2.7.3

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    # 返回ListNode
    def ReverseList(self, pHead):
        # write code here
        if not pHead or not pHead.next:
            return pHead
        newHead = None
        while pHead:
            temp = pHead.next
            pHead.next = newHead
            newHead = pHead
            pHead = temp
        return newHead

題目:輸入兩個單調遞增的連結串列,輸出兩個連結串列合成後的連結串列,當然我們需要合成後的連結串列滿足單調不減規則。

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    # 返回合併後列表
    def Merge(self, pHead1, pHead2):
        # write code here
        if not pHead1:
            return pHead2
        if not pHead2:
            return pHead1
        if pHead1.val < pHead2.val:
            pres = pHead1
            pres.next = self.Merge(pHead1.next, pHead2)
        else:
            pres = pHead2
            pres.next = self.Merge(pHead1, pHead2.next)
        return pres