4.3.11 创新习题

32. 双端队列(Deque)。一个双端队列或deque(发音为“deck”)是一个栈和队列的结合。请编写一个类Deque,使用链表实现如表4-3-5所示的Deque的API。

表4-3-5 双端队列的API

注:双端队列的空间使用必须与队列中项目的个数呈线性关系。

33. 约瑟夫斯问题(Josephus problem)。在古老的约瑟夫问题中,有n个人陷入困境,并一致同意按如下策略减少人数。n个人排列成一个圆圈(分别位于位置0到n-1),然后由第1个人开始按照圆圈报数,每报数到第m个人就杀掉该人,然后再由下一个重新报数,直到剩下最后一个人。传说约瑟夫斯想出了一个好办法,按照他的办法排位,可以成功逃过这场死亡游戏。请编写一个Queue客户端josephus.py,从命令行接收参数n和m,输出依次被杀的人的序号(从而确定约瑟夫斯在圆圈中所选择的位置)。程序运行过程及结果如下:

34. 合并两个排序队列(Merging two sorted queue)。给定两个按升序排列的字符串序列,把所有的字符串移动到第三个字符串序列中,同时保证第三个队列的结果也按升序排列。

35. 非递归合并排序(Nonrecursive mergesort)。给定n个字符串,创建 ...

Get 程序设计导论:Python语言实践 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.