题目描述:设计一个排序系统,能够让每个进入队伍的用户都能看的自己在队列中所处的位置和变化,队伍可能随时有人加入和退出;当有人退出影响到用户的位置排名时需要及时反馈到用户。
from collections import deque
class User:
def __init__(self, id, name):
self.id = id # 唯一标识一个用户
self.name = name
self.seq = 0
def getName(self):
return self.name
def setName(self, name):
self.name = name
def getSeq(self):
return self.seq
def setSeq(self, seq):
self.seq = seq
def getId(self):
return self.id
def equals(self, arg0):
o = arg0
return self.id == o.getId()
def toString(self):
return "id: "+str(self.id)+" name:"+self.name + " seq:"+str(self.seq)
class MyQueue:
def __init__(self):
self.q = deque()
def enQueue(self, u): # 进入队列尾部
u.setSeq(len(self.q)+1)
self.q.append(u)
# 队头出队列
def deQueue(self):
self.q.popleft()
self.updateSeq()
# 队列中的人随机离开
def deQueuemove(self, u):
self.q.remove(u)
self.updateSeq()
# 出队列后更新队列中每个人的序列
def updateSeq(self):
i = 1
for u in self.q:
u.setSeq(i)
i += 1
# 打印队列中的信息
def printList(self):
for u in self.q:
print(u.toString())