题解 | #【模板】循环队列#
【模板】循环队列
https://www.nowcoder.com/practice/0a3a216e50004d8bb5da43ad38bcfcbf?tpId=308&tqId=2372963&ru=/exam/oj&qru=/ta/algorithm-start/question-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D308
import sys # for line in sys.stdin: # a = line.split() # print(int(a[0]) + int(a[1])) class CirculateQueue(): def __init__(self,k:int): """ 设置队列的长度为k,初始化队列长度 """ self.L=[0] *k self.length = k self.count = 0 self.tail= -1 self.head= 0 def push(self,x:int)->bool: """ 向环形队列中插入一个元素,如果插入成功返回True """ if self.isFull() == False: if self.tail == self.length-1: self.tail =0 else: self.tail +=1 self.count+=1 self.L[self.tail]=x return True else: return False def pop(self): """ 删除一个元素从环形队列中,如果操作成功,返回True """ if self.isEmpty() ==False: print(self.L[self.head]) self.L[self.head]=0 self.count-=1 if self.head !=self.tail: if self.head ==self.length -1: self.head=0 else: self.head+=1 else: self.head=0 self.tail=-1 return True else: return False def isEmpty(self)->bool: """ 判断对列是否为空环形队列 """ if self.count ==0: print("empty") return True else: return False def front(self): """ 返回环形队列的对首,不删除对首 """ if self.isEmpty(): return -1 else: print(self.L[self.head]) return self.L[self.head] def isFull(self)->bool: """ 判断对列是否已经满了 """ if self.count == self.length: print("full") return True else: return False L= input().split() l,n=int(L[0]),int(L[1]) opration = [] Queue = CirculateQueue(l) while n > 0: s = input() opration.append(s) n -= 1 for x in opration: if x[0:4] == "push": number = int(x[4:]) Queue.push(number) if x == "pop": try: Queue.pop() except: print("error") if x == "front": try: Queue.front() except: print("error")