码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-12-28 23:15:50      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

看来看来,还是以下这个实现最优雅。。

其它的,要么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基础的东东--数据结构,算法,设计模式---单向链表

标签:

原文地址:http://www.cnblogs.com/aguncn/p/5084126.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!