zoukankan      html  css  js  c++  java
  • 编写程序,实现在带头结点的单链表L中删除一个最小值节点的算法。

    算法复杂度0(n)

     1 #!/usr/bin/env python3
     2 
     3 class LNode(object):
     4         def __init__(self, elem, next_=None):
     5                 self.elem = elem
     6                 self.next = next_
     7 
     8 class Rm_Small_List(object):
     9         def __init__(self):
    10                 self.head = None
    11                 self.num = 0
    12 
    13         def prepend(self, elem):
    14                 self.head = LNode(elem, self.head)
    15                 self.num += 1
    16 
    17         def rm_small(self):
    18                 p = self.head
    19                 small = p.elem
    20                 while p.next:
    21                         p = p.next
    22                         if small > p.elem:
    23                                 small = p.elem
    24                 p = self.head
    25                 pre = None
    26                 while p:
    27                         if not pre and p.elem == small:
    28                                 self.head = self.head.next
    29                                 return
    30                         if p.elem == small:
    31                                 pre.next = p.next
    32                                 return
    33                         pre = p
    34                         p = p.next
    35 
    36         def bianli(self):
    37                 p = self.head
    38                 li = []
    39                 while p:
    40                         li.append(p.elem)
    41                         p = p.next
    42                 return li
    43 
    44 if __name__ == '__main__':
    45         l = Rm_Small_List()
    46         l.prepend(8)
    47         l.prepend(2)
    48         l.prepend(3)
    49         l.prepend(5)
    50         print(l.bianli())
    51         l.rm_small()
    52         print(l.bianli())

    结果:

    [5, 3, 2, 8]
    [5, 3, 8]

  • 相关阅读:
    P站画师 GTZ taejune 精选4k插画壁纸
    点、向量与坐标系
    一些几何
    画直线算法 Line drawing algorithm
    DX11 学习大纲
    插值 Interpolation
    The History of Computer Graphics
    vue中的请求拦截响应
    Event loop
    小程序使用wx.navigateTo()跳转失败
  • 原文地址:https://www.cnblogs.com/xautxuqiang/p/6414650.html
Copyright © 2011-2022 走看看