Halcom 发表于 2019-9-12 23:43:06

ListNode单链表结构


创建一个ListNode:
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 12 23:13:38 2019

"""
class Node(object):
    def __init__(self):
      self.val = None
      self.next = None

class Node_handle():
    def __init__(self):
      self.cur_node = None
    def add(self,data):
      node = Node()
      node.val = data
      node.next = self.cur_node
      self.cur_node = node
      return node

l1 = Node()
ListNode_ = Node_handle()      
l1 = ListNode_.add(2)
l1 = ListNode_.add(4)
l1 = ListNode_.add(3)

while l1:
    print ('\nnode: ', l1, ' value: ', l1.val, ' next: ', l1.next)
    l1 = l1.next输出如下:
node:<__main__.Node object at 0x08BF2930>value:3next:<__main__.Node object at 0x08BF2350>

node:<__main__.Node object at 0x08BF2350>value:4next:<__main__.Node object at 0x08BF2830>

node:<__main__.Node object at 0x08BF2830>value:2next:None
参考:
【1】ListNode的Python实现
【2】使用python实现链表操作
【3】https://leetcode-cn.com/problems/add-two-numbers/submissions/





Halcom 发表于 2019-9-12 23:46:46

# -*- coding: utf-8 -*-
"""
Created on Thu Sep 12 23:13:38 2019

"""
class Node(object):
    def __init__(self):
      self.val = None
      self.next = None

class Node_handle():
    def __init__(self):
      self.cur_node = None
    def add(self,data):
      node = Node()
      node.val = data
      node.next = self.cur_node
      self.cur_node = node
      return node

l1 = Node()
ListNode_1 = Node_handle()      
l1 = ListNode_1.add(2)
l1 = ListNode_1.add(4)
l1 = ListNode_1.add(3)

while l1:
    print ('\nnode: ', l1, ' value: ', l1.val, ' next: ', l1.next)
    l1 = l1.next
l2 = Node()
ListNode_2 = Node_handle()
l2 = ListNode_2.add(5)
l2 = ListNode_2.add(6)
l2 = ListNode_2.add(4)
while l2:
    print ('\nnode: ', l2, ' value: ', l2.val, ' next: ', l2.next)
    l2 = l2.next

Halcom 发表于 2019-9-19 23:01:18

(1)删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
答题代码如下:
# Definition for singly-linked list.
# class ListNode:
#   def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def deleteDuplicates(self, head: ListNode) -> ListNode:
      if head is None:
            return None
      pre = ListNode(-100000)
      pre.next = head
      slow = pre
      fast = pre.next
      while fast :
            if slow.val == fast.val:
                fast = fast.next
                slow.next = fast
            else:
                slow = slow.next
                fast = fast.next
      return pre.next
(2)合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
答题代码如下:
# Definition for singly-linked list.
# class ListNode:
#   def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
      l3 = ListNode(-1);
      l4 = l3;
      if not l1:
            return l2
      if not l2:
            return l1
      while(l1 is not None and l2 is not None):
            if(l1.val<l2.val):
                l4.next = l1
                l1=l1.next
            else:
                l4.next = l2
                l2=l2.next
            l4 = l4.next
      if(l1 is None):
            l4.next = l2
      else:
            l4.next = l1
      return l3.next

页: [1]
查看完整版本: ListNode单链表结构