题目描述
请设计一个排序系统,能够让每个进入队伍的用户都能看到自己在队伍中所处的位置和变化,队伍可能随时友人加入和退出;当有人退出影响到用户的位置排名是需要及时反馈到用户。
分析
- 实现队列常见的入队和出队功能
- 实现队列中任意一个元素都可以随时出队列
- 出队列后需要更新队列用户位置的变化
代码
from collections import dequeclass User:def __init__(self, id, name) -> None:self.id = id # 唯一标识一个用户self._name = nameself.seq = 0def getName(self):return self._namedef setName(self, name):self._name = namedef getSeq(self):return self.seqdef setSeq(self, seq):self.seq = seqdef getID(self):return self.iddef equals(self, arg0):o = arg0return self.id == o.getID()def toString(self):return 'id:' + str(self.id) + ' name:' + self._name + ' seq:' + str(self.seq)class MyQueue:def __init__(self) -> None:self.queue = deque()def enQueue(self, u):# 进入队列u.setSeq(len(self.queue) + 1)self.queue.append(u)def deQueue(self):# 出队self.queue.popleft()self.updateSeq()def deQueuemove(self, u):# 队列中的人随机离开self.queue.remove(u)self.updateSeq()def updateSeq(self):# 出队列后更新队列中每个人的序列i = 1for u in self.queue:u.setSeq(i)i += 1def printList(self):for u in self.queue:print(u.toString())if __name__ == "__main__":user1 = User(1, 'user1')user2 = User(2, 'user2')user3 = User(3, 'user3')user4 = User(4, 'user4')queue = MyQueue()queue.enQueue(user1)queue.enQueue(user2)queue.enQueue(user3)queue.enQueue(user4)queue.deQueue()queue.deQueuemove(user3)queue.printList()
