python 双向链表
2016-02-24 14:51
447 查看
#coding:utf-8 class DoubleLinked: def __init__(self): self.DL = self.Node(None) # 哨兵 def insert(self, k): self.pprint() node = self.Node(k) p = self.DL temp = p.next while temp and cmp(temp.k, k) == 1: p = temp temp = temp.next node.pre = p node.next = temp p.next = node if temp: temp.pre = node def search(self, k): node = self.DL.next while node and cmp(node.k, k) != 0: node = node.next return node def remove(self,k): self.pprint() node = self.search(k) if node: node.pre.next = node.next if node.next: node.next.pre = node.pre print 'delete %s ' % str(k) else: print 'not find %s ' % str(k) def pprint(self): node = self.DL while node: print '%s(%s %s %s)' % (str(id(node)), node.pre, str(node.k), node.next), node = node.next print @classmethod def test(cls): DL = cls() DL.insert(20) DL.insert(18) DL.insert(21) DL.insert(19) DL.remove(24) DL.remove(21) DL.remove(19) DL.remove(18) DL.remove(24) DL.remove(20) DL.remove(20) DL.pprint() print 'test over' class Node: def __init__(self, k): self.pre = self.next = None self.k = k def __str__(self): return str(id(self)) DoubleLinked.test()
相关文章推荐
- python学习笔记五--文件
- windows下python2.7版本numpy,Scipy,matplotlib安装
- python+eclipse+pydev
- Python 3.4编程教程
- Python之模块介绍
- python学习笔记四--元组
- python 单链表
- 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