欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Leetcode代码补全——链表

程序员文章站 2022-06-24 12:17:41
通过补全代码可以更深刻的体会到,链表就是一个存储方式,通过一单元的存储指向下一单元,而查看单元内容通过头部开始的指针依次遍历。这是leetcode里融合两个链表的题目,具体代码如下: #encoding=utf-8 class ListNode(object): def __init__(self, ......

通过补全代码可以更深刻的体会到,链表就是一个存储方式,通过一单元的存储指向下一单元,而查看单元内容通过头部开始的指针依次遍历。这是leetcode里融合两个链表的题目,具体代码如下:

 

#encoding=utf-8

class ListNode(object):

    def __init__(self, x):

        self.val = x

        self.next = None

 

        self.root = None

#添加链表节点函数

    def addNode(self, val):

        if self.root==None:

            self.root= ListNode(x=val)

            return self.root

        else:

      # 有头结点,则需要遍历到尾部节点,进行链表增加操作

            cursor = self.root

            while cursor.next!= None:

                cursor = cursor.next

            cursor.next = ListNode(x=val)

            return self.root

#下面就是题目具体解决过程 

class Solution(object):

    def mergeTwoLists(self, l1, l2):

        """

        :type l1: ListNode

        :type l2: ListNode

        :rtype: ListNode

        """

        head=ListNode(0)

        cur=head

        

        while(l1!=None and l2!=None):

            if l1.val<l2.val:

                cur.next=l1

                l1=l1.next

            else:

                cur.next=l2

                l2=l2.next

            #cur.next.next=None

            cur=cur.next

        if l1!=None:

            cur.next=l1

        else:

            cur.next=l2

        return head.next

#下面也是leetcode省略部分,实例化两个链表。添加节点,进行融合操作 

a=ListNode(1)

b=ListNode(1)

print a.addNode(3).addNode(4)

print b.addNode(2).addNode(4)

c=Solution()

print c.mergeTwoLists(a,b)