python 单链表
2016-02-24 14:21
330 查看
闲着无聊,python单链表
#coding:utf-8 class Linked: def __init__(self): self.L = None def insert(self, k): self.pprint() node = self.Node(k) p = temp = self.L # 找到合适位置的前一个节点p, 若p==temp,表示应插入到头结点 while temp and cmp(temp.k, k) == -1: p = temp temp = temp.next # 两种情况, 插在头结点还是其他位置 if p==temp==self.L: node.next = self.L self.L = node else: node.next = p.next p.next = node def search(self, k): node = self.L while node and cmp(node.k, k) != 0: node = node.next return node def remove(self, k): self.pprint() p = temp = self.L while temp and temp.k != k: p = temp temp = temp.next if temp is None: # 两种情况,链表为空或者找到了最后 if temp == p: print 'null linked' else: print 'not find %s' % str(k) else: # 两种情况,头结点和其余的节点 if temp == p: self.L = temp.next else: p.next = temp.next del temp print 'delete %s' % str(k) def pprint(self): node = self.L while node: print '%s(%s, %s)' % (str(id(node)), str(node.k), str(node.next)), node = node.next print @classmethod def test(cls): L = cls() L.insert(20) L.insert(18) L.insert(21) L.insert(19) L.remove(24) L.remove(21) L.remove(19) L.remove(18) L.remove(24) L.remove(20) L.remove(20) L.pprint() print 'test over' class Node: def __init__(self, k): self.k = k self.next = None def __str__(self): return unicode(id(self)) Linked.test()
相关文章推荐
- Python语言特性(一)
- NumPy简介
- Python——类的设计
- Python字符串前缀U和R的区别
- 【LEETCODE】61- Rotate List [Python]
- Python——类的设计
- python程序打包示例
- python操作cfg配置文件
- python 字符串/元组/列表/字典互转
- python程序的调试方法
- python3.4标准库介绍
- python异常处理体系
- python 3.4.2 telnetlib
- python 关于时间模块的总结1
- python属性访问的相关内容
- Selenium自動化測試(Python+VS2013)-基礎篇-環境安裝
- VS2013中Python学习笔记[环境搭建]
- Python数据科学学习进阶
- python爬虫之糗百段子
- python