Python 使用单链表实现队列 (基于class, 包含迭代器)
来源:互联网 发布:工具书中的网络词语 编辑:程序博客网 时间:2024/06/06 06:30
#!/usr/bin/python # -*- coding: utf-8 -*-'''Created on 2015-2-3@author: beyondzhou@name: test_linklistqueue.py'''def test_linklistqueue(): # import pyListQueue from myqueue import linkListQueue print '#Init a queue named smith using enqueue' smith = linkListQueue() 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 smith.enqueue('ECON-102') print '\n#output smith after enqueue again' 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!' print '\n#init again' 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 if __name__ == "__main__": test_linklistqueue()
# Implementation of the Queue ADT using a linked listclass linkListQueue: # Creates an empty queue def __init__(self): self._qhead = None self._qtail = None self._count = 0 # Returns True if the queue is empty def isEmpty(self): return self._qhead is None # Returns the number of items in the queue def __len__(self): return self._count # Adds the given item to the queue def enqueue(self, item): node = _LinkListQueueNode(item) if self.isEmpty(): self._qhead = node else: self._qtail.next = node self._qtail = node self._count += 1 # Removes and returns the first item in the queue def dequeue(self): assert not self.isEmpty(), "Cannot dequeue from an empty queue." node = self._qhead if self._qhead is self._qtail: self._qtail = None self._qhead = self._qhead.next self._count -= 1 return node.item # Returns an iterator for traversing the list of items def __iter__(self): return _LinkListQueueIterator(self._qhead)# Private storage class for creating the linked list nodesclass _LinkListQueueNode(object): def __init__(self, item): self.item = item self.next = None# Defines a linked list iterator class _LinkListQueueIterator: def __init__(self, queueHead): self._curNode = queueHead def __iter__(self): return self def next(self): if self._curNode is None: raise StopIteration else: item = self._curNode.item self._curNode = self._curNode.next return item
#Init a queue named smith using enqueue#output smith queueCSCI-112MATH-121HIST-340ECON-101#dequeue one item#output smith after dequeueMATH-121HIST-340ECON-101#output smith after enqueue againMATH-121HIST-340ECON-101ECON-102#get the length of queuethe lenght of queue is 4#check wheter the queue is emptyqueue is not empty!#dequeue all items#check wheter the queue is empty after dequeue all itemsqueue is empty!#init again#output smith queueCSCI-112MATH-121HIST-340ECON-101
0 0
- Python 使用单链表实现队列 (基于class, 包含迭代器)
- Python 使用list实现队列 (基于class, 包含迭代器)
- Python 使用循环数组实现队列 (基于class, 包含迭代器)
- Python 使用由单链表构建的数组实现有边际优先队列 (基于class, 包含迭代器)
- Python 使用单链表实现堆栈 (基于class, 包含迭代器)
- Python 使用list实现无边际优先队列 (基于class, 包含迭代器)
- Python 使用list实现堆栈 (基于class, 包含迭代器)
- 基于PHP使用rabbitmq实现消息队列
- python使用队列实现生产者消费者
- python使用queue队列实现生产者消费者
- 基于Python语言使用RabbitMQ消息队列(一)
- 基于Python语言使用RabbitMQ消息队列(二)
- 基于Python语言使用RabbitMQ消息队列(三)
- 基于Python语言使用RabbitMQ消息队列(四)
- 基于Python语言使用RabbitMQ消息队列(五)
- 基于Python语言使用RabbitMQ消息队列(六)
- C#实现优先队列 基于二叉堆 附使用案例
- python 实现Graph class
- 冗余
- 关于baidu地图使用c#WebBrowser滑轮不能响应的原因
- 0和1的世界之“在迷茫中寻求出路”
- android 超轻量级的ORM框架
- 在SAE的Python工程上使用MySQL
- Python 使用单链表实现队列 (基于class, 包含迭代器)
- SQLite3数据库
- ios错误收集
- 【整理】为什么要写博客
- Hadoop 使用场景
- 各种控件的开源项目
- 用javascript获取屏幕高度和宽度等信息
- android ListView包含CheckBox时滑动丢失选中状态的解决
- 标准C++中的string类的用法总结