学点PYTHON基础的东东--数据结构,算法,设计模式---单向链表
2015-12-28 21:48
846 查看
看来看来,还是以下这个实现最优雅。。
其它的,要么NODE冗余,要么初始化丑陋。。。
其它的,要么NODE冗余,要么初始化丑陋。。。
#!/usr/bin/env python # -*- coding: utf-8 -*- class Node: def __init__(self, initdata): self.__data = initdata self.__next = None def getData(self): return self.__data def getNext(self): return self.__next def setData(self, newdata): self.__data = newdata def setNext(self, newnext): self.__next = newnext class SinCycLinkedlist: def __init__(self): self.head = Node(None) self.head.setNext(self.head) def add(self, item): temp = Node(item) temp.setNext(self.head.getNext()) self.head.setNext(temp) def remove(self, item): prev = self.head while prev.getNext() != self.head: cur = prev.getNext() if cur.getData() == item: prev.setNext(cur.getNext()) prev = prev.getNext() def search(self, item): cur = self.head.getNext() while cur != self.head: if cur.getData() == item: return True cur = cur.getNext() return False def empty(self): return self.head.getNext() == self.head def size(self): count = 0 cur = self.head.getNext() while cur != self.head: count += 1 cur = cur.getNext() return count if __name__ == '__main__': s = SinCycLinkedlist() print('s.empty() == %s, s.size() == %s' % (s.empty(), s.size())) s.add(19) s.add(86) print('s.empty() == %s, s.size() == %s' % (s.empty(), s.size())) print('86 is%s in s' % ('' if s.search(86) else ' not',)) print('4 is%s in s' % ('' if s.search(4) else ' not',)) print('s.empty() == %s, s.size() == %s' % (s.empty(), s.size())) s.remove(19) print('s.empty() == %s, s.size() == %s' % (s.empty(), s.size()))
相关文章推荐
- 深入浅出--二叉树
- 学点PYTHON基础的东东--数据结构,算法,设计模式---访问者模式
- 学点PYTHON基础的东东--数据结构,算法,设计模式---观察者模式
- 06 RedBlackTree
- linux内核数据结构之链表
- Linux C 数据结构——队列
- PHP SPL 数据结构笔记摘要
- 《面向算法设计的数据结构(C++语言版)》正式出版
- 数据结构课程设计之学生成绩管理
- 数据结构线性表相关操作
- java中的数据结构整理
- 【Tsinghua Online Judge】旅行商(TSP)-拓扑排序求大路径
- 数据结构绪论
- 数据结构:关于AVL树的平衡旋转详解
- 数据结构:关于AVL树的平衡旋转详解
- 数据结构--Chapter8(外排序)
- 数据结构之双向链表
- Linux C 数据结构——栈
- 数据结构严蔚敏版快速排序算法c语言实现
- 数据结构和算法经典100题-第26题