'''==========数组实现队列==============='''
class MyQueue():
#用两个指针分别记录队列首元素的位置、队列尾元素往后一个位置
def __init__(self):
self.items = []
self.front = 0 #队列头
self.last = 0 #队列尾元素往后一个位置
#判断队列是否为空
def empty(self):
return self.front ==self.last
#返回队列的大小
def size(self):
return self.last -self.front
#返回队列的首元素
def getFront(self):
if self.empty():
return None
else:
return self.items[self.front]
#返回队列的尾元素
def getLast(self):
if self.empty():
return None
else:
return self.items[self.last-1]
#删除队列头元素
def deQueue(self):
if self.front<self.last:
self.front+=1
else:
print("队列已空")
#把新元素加入队列
def enQueue(self,e):
self.items.append(e)
self.last+=1
if __name__=="__main__":
Q = MyQueue()
Q.enQueue(1)
Q.enQueue(2)
Q.enQueue(5)
print("队列的头元素是:"+str(Q.getFront()))
print("队列的尾元素是:" + str(Q.getLast()))
print("队列的大小是:" + str(Q.size()))
'''==========链表实现队列==============='''
class Node(object):
# 创建一个节点
def __init__(self, val=None, next=None):
self.val = val
self.next = next
class MyQueue():
# 分配头结点
def __init__(self):
self.pHead = None
self.pEnd = None
# 判断队列是否为空
def isEmpty(self):
if self.pHead == None:
return True
else:
return False
# 返回队列大小
def size(self):
size = 0
p = self.pHead
while p:
size += 1
p = p.next
return size
# 返回队列首元素
def getpHead(self):
if self.isEmpty():
return None
print("队列已经是空")
return self.pHead.val
# 返回队列尾元素
def getpEnd(self):
if self.isEmpty():
return None
print("队列已经是空")
return self.pEnd.val
# 出队列,删除队列头元素
def deQueue(self):
if self.isEmpty():
return None
print("队列已经是空")
self.pHead = self.pHead.next
# 全部删除后头结点指针与魏结点指针重合,均指向None
if self.pHead == None:
self.pEnd = None
# 把新元素加入队列尾
def addQueue(self, e):
p = Node()
p.val = e
# p.next =None
if self.pHead == None:
self.pHead = self.pEnd = p
else:
self.pEnd.next = p
self.pEnd = p
if __name__ == "__main__":
Q = MyQueue()
Q.addQueue(1)
Q.addQueue(2)
Q.addQueue(5)
print("队列的头元素是:" + str(Q.getpHead()))
print("队列的尾元素是:" + str(Q.getpEnd()))
print("队列的大小是:" + str(Q.size()))
分别用数组、链表实现队列
猜你喜欢
转载自blog.csdn.net/liuli1926634636/article/details/89454365
今日推荐
周排行