缘由
这是腾讯2014校园招聘软件开发类笔试试题的附加题题干
请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在队列中所处的位置和变化,队伍可能随时有人加入和退出;当有人退出影响到用户的位置排名时需要及时反馈到用户。我的解答
这类题属于简答题。我只写了个单机程序。下面是我对这个题思路。首先我们需要一个容器来保存所有人,又由于随时有人加入或者退出,所以我认为用链表结果比较好(在java中就是使用LinkedList)。所以按照进入的顺序,我们对每一个进入的用户都可以返回一个在容器内的位置。有用户退出时就会调用容器类的deleteUser()方法,容器就会删除用户和更新所有人的排名。
所以整个系统有两个类,一个容器类,一个用户类。
- 用户类:主要方法是:加入队伍,返回排名和退出队伍
- 容器类:有一个用户的集合成员变量,加入一个用户(返回该用户的排名),打印所有用户的排名,删除用户(从容器中删除队伍,并且更新所有受影响的用户的排名)。