题意: 有组织排队, 即每个人要开始排队时, 先查找是否有与他同组织的人已经在排队, 若是, 则这个可以直接插队到他所在组织的最后; 若找不到组织, 则只能排到队伍的最后. 有 ENQUEUE 与 DEQUEUE 两种命令, ENQUEUE 表示把当前人按前面提到的规则入队, DEQUEUE 表示把队伍最前端的人输出后出队.
思路: 1. 使用 list 来存放各个组织的队伍. 2. 使用 vector 来存放各个 list 的首元素, 主要是为了 DEQUEUE 时能够是从实际队列的头向尾出队的, 即先出队的总是 vector 中排在最前面的 list 的元素; 当此 list 为空后, 就把此 list 从 vector 中删除, 再从下一个 list 中取元素出来进行 DEQUEUE . 3. 每次 ENQUEUE 后, 都要判断此 list 是否已在 vector 中, 若未在, 则说明此人是未找到组织, 新增的一个 list, 需要把其补到 vector 的最后.
要点: 1. list insert 时, 若传进来的 iterator 为 end(), 会直接插在最后面吗? 会的!!!
题目:
代码:
# include# include # include # include # include # include # include # include # include # include # include