您的位置:首页 > 理论基础 > 数据结构算法

学点PYTHON基础的东东--数据结构,算法,设计模式---单向链表

2015-12-28 21:48 846 查看
看来看来,还是以下这个实现最优雅。。

其它的,要么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()))


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: