首页 > 代码库 > 数组队列 与 链表队列
数组队列 与 链表队列
做了些实验,感觉 用链表实现队列 比 用数组实现队列 性能好
进出队的每秒操作数比较
数组队列
enqueue | 37,037 |
dequeue | 4,166,666 |
链表队列
enqueue | 277,778 |
dequeue | 666,667 |
先入队n次,再出队n次的运行时间比较,单位是秒
出入队次数 | 数组队列运行时间 | 链表队列运行时间
1,000 | 0.01 | 0.01 |
10,000 | 0.04 | 0.04 |
100,000 | 2.7 | 0.4 |
1,000,000 |
| 4 |
最后一组,数组队列的半天没运行出来
下面是代码
class ArrayQueue:
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)
class Node:
def __init__(self,initdata):
self.data = initdata
self.next = None
self.prev = None
class LinkedListQueue:
def __init__(self):
self.head = None
self.rear = None
self.size = 0
def isEmpty(self):
return self.size == 0
def size(self):
return self.size
def enqueue(self,item):
self.size += 1
pre = self.head
self.head = Node(item)
self.head.next = pre
if pre != None: pre.prev = self.head
else: self.rear = self.head
def dequeue(self):
if self.size == 0: return None
self.size -= 1
rmdata = self.rear.data
if self.rear.prev != None:
self.rear = self.rear.prev
return rmdata
数组队列 与 链表队列