python leetcode两数相加 链表(完整的本地代码,包括输入,输出)

说明:因为在leetcode做算法题时,并不需要写输入输出,但是在实际线上笔试的时候需要自己调试,这里尤其是链表的插入以及链表的输出。还有链表的定义

完整代码如下:

import sys
#定义节点
class ListNode:
    def __init__(self, x):
        self.value = x
        self.next = None
#定义链表
class LinkList:
    def __init__(self):
        self.head=None

    def initList(self, data):
        # 创建头结点
        self.head = ListNode(data[0])
        r=self.head
        p = self.head
        # 逐个为 data 内的数据创建结点, 建立链表
        for i in data[1:]:
            node = ListNode(i)
            p.next = node
            p = p.next
        return r
    def printlist(self,head):
        if head == None: return
        node = head
        while node != None:
            print(node.value,end=' ')
            node = node.next
class Solution:
    def twosum(self,l1,l2):
        temp=ListNode(0)
        l3=temp
        a=0
        while l1!=None or l2!=None or a!=0:
            if l1!=None:
                a+=l1.value
                l1=l1.next
            if l2!=None:
                a+=l2.value
                l2=l2.next
            temp.next=ListNode(a%10)
            temp=temp.next
            a=a//10
        return l3.next

if __name__ == "__main__":
    line1 = sys.stdin.readline().strip()
    l3=list(map(int, line1.split()))
    line2 = sys.stdin.readline().strip()
    l4 = list(map(int, line2.split()))
    b=LinkList()
    l1=b.initList(l3)
    l2=b.initList(l4)
    a=Solution()
    l5=a.twosum(l1,l2)
    b.printlist(l5)

你可能感兴趣的:(leetcode,数据结构,Python)