问答题 2.  请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在队列中所处的位置和变化,队伍可能随时有人加入和退出;当有人退出影响到用户的位置排名时需要及时反馈到用户。
【正确答案】本题不仅要实现队列常见的入队列与出队列的功能,而且还需要实现队列中任意一个元素都可以随时出队列,且出队列后需要更新队列用户位置的变化。实现代码如下:
   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()
   
   if __name__=="__main__":
   u1=User(1, "user1")
   u2=User(2, "user2")
   u3=User(3, "user3")
   u4=User(4, "user4")
   queue=MyQueue()
   queue.enQueue(u1)
   queue.enQueue(u2)
   queue.enQueue(u3)
   queue.enQueue(u4)
   queue.deQueue() #队首元素u1出队列
   queue.deQueuemove(u3)#队列中间的元素u3出队列
   queue.printList()
   程序的运行结果为:
   id:2 name:user2 seq:1
   id:4 name:user4 seq:2
【答案解析】

[考点] 如何设计一个排序系统。