请选择 进入手机版 | 继续访问电脑版

Hello Mat

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 567|回复: 2

ListNode单链表结构

[复制链接]

764

主题

909

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
29942
发表于 2019-9-12 23:43:06 | 显示全部楼层 |阅读模式

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

  4. """
  5. class Node(object):
  6.     def __init__(self):
  7.         self.val = None
  8.         self.next = None

  9. class Node_handle():
  10.     def __init__(self):
  11.         self.cur_node = None
  12.     def add(self,data):
  13.         node = Node()
  14.         node.val = data
  15.         node.next = self.cur_node
  16.         self.cur_node = node
  17.         return node

  18. l1 = Node()
  19. ListNode_ = Node_handle()      
  20. l1 = ListNode_.add(2)
  21. l1 = ListNode_.add(4)
  22. l1 = ListNode_.add(3)

  23. while l1:
  24.     print ('\nnode: ', l1, ' value: ', l1.val, ' next: ', l1.next)
  25.     l1 = l1.next
复制代码
输出如下:
  1. node:  <__main__.Node object at 0x08BF2930>  value:  3  next:  <__main__.Node object at 0x08BF2350>

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

  3. node:  <__main__.Node object at 0x08BF2830>  value:  2  next:  None
复制代码

参考:
【1】ListNode的Python实现
【2】使用python实现链表操作
【3】https://leetcode-cn.com/problems/add-two-numbers/submissions/





算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

764

主题

909

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
29942
 楼主| 发表于 2019-9-12 23:46:46 | 显示全部楼层
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Thu Sep 12 23:13:38 2019

  4. """
  5. class Node(object):
  6.     def __init__(self):
  7.         self.val = None
  8.         self.next = None

  9. class Node_handle():
  10.     def __init__(self):
  11.         self.cur_node = None
  12.     def add(self,data):
  13.         node = Node()
  14.         node.val = data
  15.         node.next = self.cur_node
  16.         self.cur_node = node
  17.         return node

  18. l1 = Node()
  19. ListNode_1 = Node_handle()      
  20. l1 = ListNode_1.add(2)
  21. l1 = ListNode_1.add(4)
  22. l1 = ListNode_1.add(3)

  23. while l1:
  24.     print ('\nnode: ', l1, ' value: ', l1.val, ' next: ', l1.next)
  25.     l1 = l1.next
  26. l2 = Node()
  27. ListNode_2 = Node_handle()  
  28. l2 = ListNode_2.add(5)
  29. l2 = ListNode_2.add(6)
  30. l2 = ListNode_2.add(4)
  31. while l2:
  32.     print ('\nnode: ', l2, ' value: ', l2.val, ' next: ', l2.next)
  33.     l2 = l2.next
复制代码
算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复 支持 反对

使用道具 举报

764

主题

909

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
29942
 楼主| 发表于 2019-9-19 23:01:18 | 显示全部楼层
(1)删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
答题代码如下:
  1. # Definition for singly-linked list.
  2. # class ListNode:
  3. #     def __init__(self, x):
  4. #         self.val = x
  5. #         self.next = None

  6. class Solution:
  7.     def deleteDuplicates(self, head: ListNode) -> ListNode:
  8.         if head is None:
  9.             return None
  10.         pre = ListNode(-100000)
  11.         pre.next = head
  12.         slow = pre
  13.         fast = pre.next
  14.         while fast :
  15.             if slow.val == fast.val:
  16.                 fast = fast.next
  17.                 slow.next = fast
  18.             else:
  19.                 slow = slow.next
  20.                 fast = fast.next
  21.         return pre.next
复制代码

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

  6. class Solution:
  7.     def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
  8.         l3 = ListNode(-1);
  9.         l4 = l3;
  10.         if not l1:
  11.             return l2
  12.         if not l2:
  13.             return l1
  14.         while(l1 is not None and l2 is not None):
  15.             if(l1.val<l2.val):
  16.                 l4.next = l1
  17.                 l1=l1.next
  18.             else:
  19.                 l4.next = l2
  20.                 l2=l2.next
  21.             l4 = l4.next
  22.         if(l1 is None):
  23.             l4.next = l2
  24.         else:
  25.             l4.next = l1
  26.         return l3.next
复制代码

算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


Python|Opencv|MATLAB|Halcom.cn  

GMT+8, 2019-11-15 23:50 , Processed in 0.108691 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表