python数据结构与算法 14 队列的python实现
2014-03-18 07:00
281 查看
队列的python实现
在建立抽象数据类型之后,可以建立一个类来实现队列的。和以前一样,我们采用python内置的列表作为工具来建立队列类。
队列也是有序的,所以需要决定队列的哪一头作为队列的前端和尾端。在下面的实现代码中,我们约定列表的0位置是队列的尾部,这样的好处是,可以直接使用列表的insert方法在队尾加入数据,使用pop方法在队列的前端(这时是列表的最后一个数据)删除数据。从性能上分析,这意思着endueue是O(n),而出队是O(1)。
Listing 1
class Queue:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def enqueue(self, item):
self.items.insert(0,item)
def dequeue(self):
return self.items.pop()
def size(self):
return len(self.items)
以下是测试代码
q=Queue()
q.isEmpty()
q.enqueue('dog')
q.enqueue(4)
q=Queue()
q.isEmpty()
q.enqueue(4)
q.enqueue('dog')
q.enqueue(True)
运行代码之后,可以在控制台测试以下功能:
>>>q.size()
3
>>>q.isEmpty()
False
>>>q.enqueue(8.4)
>>>q.dequeue()
4
>>>q.dequeue()
'dog'
>>>q.size()
2
在建立抽象数据类型之后,可以建立一个类来实现队列的。和以前一样,我们采用python内置的列表作为工具来建立队列类。
队列也是有序的,所以需要决定队列的哪一头作为队列的前端和尾端。在下面的实现代码中,我们约定列表的0位置是队列的尾部,这样的好处是,可以直接使用列表的insert方法在队尾加入数据,使用pop方法在队列的前端(这时是列表的最后一个数据)删除数据。从性能上分析,这意思着endueue是O(n),而出队是O(1)。
Listing 1
class Queue:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def enqueue(self, item):
self.items.insert(0,item)
def dequeue(self):
return self.items.pop()
def size(self):
return len(self.items)
以下是测试代码
q=Queue()
q.isEmpty()
q.enqueue('dog')
q.enqueue(4)
q=Queue()
q.isEmpty()
q.enqueue(4)
q.enqueue('dog')
q.enqueue(True)
运行代码之后,可以在控制台测试以下功能:
>>>q.size()
3
>>>q.isEmpty()
False
>>>q.enqueue(8.4)
>>>q.dequeue()
4
>>>q.dequeue()
'dog'
>>>q.size()
2
相关文章推荐
- c语言数据结构原型与实例分析(数组,链表)
- 数据结构--堆栈
- Python实现各类数据结构和算法---直接选择排序
- Chapter 3 | Stacks and Queues--实现数据结构模拟一个栈由几个子栈组成,并可以在指定子栈上进行出栈操作
- python数据结构与算法 13 队列的抽象数据类型
- 2014年腾讯,百度,微软,阿里巴巴(哈尔滨和北京站)校园招聘笔试题(涉及C,C++,JAVA,数据结构)
- 数据结构--AC自动机--模板2
- C++代码,数据结构-内部排序-选择排序-归并排序
- 【数据结构与算法分析】复习笔记(1)
- 数据结构--AC自动机--模板
- 【数据结构】 二叉树 非递归遍历
- 数据结构java学习笔记
- 大话数据结构(四) 栈和队列
- 数据结构:那些关于二叉树遍历的故事--Java实现
- 数据结构:二叉树的三叉链表存储--Java实现
- 二叉查找树(BST),平衡二叉查找树(AVL),红黑树(RBT),B~/B+树(B-tree)的比较
- 数据结构:二叉树的二叉链表存储--Java实现
- 进程调度子系统(1)调度器数据结构
- python数据结构与算法 12队列的概念
- 重新学习数据结构