对于python的数据结构,队列也可以用列表这种数据类型来实现。不过,队列与栈这两种数据类型有些区别,区别在于,栈是元素的出入口相同的,队列是一端入,另一端出。队列还有循环队列,队列中最先入队的元素也是最先出队的,就像是我们去食堂买饭一样,排在最前面的人,是先打到饭先出列的。队列是先进先出,栈是先进后出。对于栈来说,最先入栈的元素,是最后才出栈的。
还有,就是队列要设置两个指针,栈只需要设置一个指针,因为栈只有一个出入口,队列的出入口不一样。相同的是,栈和队列都可以通过列表这种数据类型来实现。
代码如下:
class Queue: def __init__(self):#初始化一个队列 self.MaxQueueSize = 10 self.s = [None for x in range(0,self.MaxQueueSize)]#用None值占据Queue的空间,10个位置。 self.front = 0 self.rear = 0 def IsEmptyQueue(self):#判断队列是否为空 if self.front == self.rear:#判断头指针和尾指针是否重合 print('空队列') iQueue = True else: print('当前队列不为空') iQueue = False return iQueue def EnQueue(self,x):#元素入队 if (self.rear<self.MaxQueueSize-1):#判断队列是否存在剩余空间 self.rear = self.rear+1#尾指针加1 self.s[self.rear] = x#添加元素到尾指针当前的位置. #print('当前进队元素为',x) else: print('满队,无法入队!!') return def DeQueue(self): if self.IsEmptyQueue():#判断队列是否为空 print('空队,无法出队!!') return else: self.front = self.front+1#头指针位置加1 return self.s[self.front]#返回头指针当前位置的队列元素 def GetHead(self): if self.IsEmptyQueue(): print('队列为空,无法输出队头元素') return else: return self.s[self.front + 1] def CreateQueueByInput(self): data = input("请输入元素(继续输入请按回车键,结束请输入'!'):") while data != '!': self.EnQueue(data) data = input("请输入元素:") if __name__ == '__main__': Q = Queue()#创建一个队列对象 Q.CreateQueueByInput()#调用函数感谢大家前来观看鄙人的文章,文中或有诸多不妥之处,还望大家指出和海涵,本人不胜感激。