Python 使用list实现队列 (基于class, 包含迭代器)

发布时间:2017-09-07 14:36:57
Python 使用list实现队列 (基于class, 包含迭代器)


#!/usr/bin/python
# -*- coding: utf-8 -*-

'''
Created on 2015-1-27
@author: beyondzhou
@name: test_listqueue.py
'''

def test_listqueue():
# import pyListQueue
from myqueue import pyListQueue
print '#Init a queue named smith using enqueue'
smith = pyListQueue()
smith.enqueue('CSCI-112')
smith.enqueue('MATH-121')
smith.enqueue('HIST-340')
smith.enqueue('ECON-101')
print '\n#output smith queue'
for element in smith:
print element
print '\n#dequeue one item'
smith.dequeue()
print '\n#output smith after dequeue'
for element in smith:
print element
print '\n#get the length of queue'
print 'the lenght of queue is ', len(smith)
print '\n#check wheter the queue is empty'
if smith.isEmpty():
print 'queue is empty!'
else:
print 'queue is not empty!'
print '\n#dequeue all items'
while not smith.isEmpty():
smith.dequeue()
print '\n#check wheter the queue is empty after dequeue all items'
if smith.isEmpty():
print 'queue is empty!'
else:
print 'queue is not empty!'
if __name__ == "__main__":
test_listqueue()

# Implementation of iter
class _pyListQueueIterator:
def __init__(self, theList):
self._setItems = theList
self._curItem = 0
def __iter__(self):
return self
def next(self):
if self._curItem < len(self._setItems):
item = self._setItems[self._curItem]
self._curItem += 1
return item
else:
raise StopIteration
# Implementation of the Queue ADT using a Python list
class pyListQueue:
# Creates an empty queue
def __init__(self):
self._qList = list()
# Returns True if the queue is empty
def isEmpty(self):
return len(self) == 0
# Returns the number of items in the queue
def __len__(self):
return len(self._qList)
# Adds the given item to the queue
def enqueue(self, item):
self._qList.append(item)
# Removes and returns the first item in the queue
def dequeue(self):
assert not self.isEmpty(), "Cannot dequeue from an empty queue."
return self._qList.pop(0)
# Returns an iterator for traversing the list of items
def __iter__(self):
return _pyListQueueIterator(self._qList)

#Init a queue named smith using enqueue

#output smith queue
CSCI-112
MATH-121
HIST-340
ECON-101

#dequeue one item

#output smith after dequeue
MATH-121
HIST-340
ECON-101

#get the length of queue
the lenght of queue is 3

#check wheter the queue is empty
queue is not empty!

#dequeue all items

#check wheter the queue is empty after dequeue all items
queue is empty!



,站群系统

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网站优化 https://www.feimao666.com


友情链接

独家出品

新闻由机器选取每5分钟自动更新

新闻搜索源于互联网新闻网站和频道,系自动分类排列,本站不刊登或转载任何完整的新闻内容