我正在尝试开发用于遍历表示我的应用程序中歌曲列表的数据结构的算法。
该列表包含我已经播放的所有歌曲(我的播放历史)和我将播放的其他歌曲。
Something like this (example):
- H 歌 1
- H 歌 2
- H 歌 3
H 歌 4
当前播放歌曲
队列5中的Q歌
- 队列6中的Q歌
- 队列7中的Q歌
- 队列8中的Q歌
我需要实现“上一个”和“下一个”按钮,这样我就可以在我的播放列表中移动。
每次播放歌曲时,它都会存储在历史记录中。
我需要有效的算法(不需要代码,只需要想法或伪代码)来解决用户播放歌曲时的所有用例。
例如,一种情况可能是:
在历史中有歌曲 1、2 和 3。现在我们播放歌曲 4,之后历史状态为 1、2、3 和 4。假设我们单击“上一个”按钮再次播放之前播放的歌曲。现在历史状态是 1、2、3、4 和 3(歌曲 3 在歌曲 4 之前播放)。再次单击“上一个”按钮,然后新的历史状态为 1、2、3、4、3 和 2。
现在假设我们单击队列中的某些歌曲,例如歌曲 6。历史状态为 1、2、3、4、3、2 和 6。现在单击“上一个”按钮应该播放歌曲 2 并将该歌曲添加到顶部历史(状态:1,2,3,4,3,2,6,2))。
如果我可以开发某种数据结构来保持我的历史状态简洁,并且如果查看历史的顶部总是会给我上一首歌,那就太好了。
因此,此数据结构不适用于该问题。它使历史状态保持简洁,但我不知道如何简单地遍历历史。
如果我更改数据结构,也许遍历算法会更简单,但是如何完成这两个请求(具有简洁的历史信息并有可能简单地获取以前播放的歌曲)?
非常感谢所有在这次讨论中做出贡献的人。很高兴现在我需要http://starvibes.com上的音乐播放器算法,这在我看来将是“下一件大事”。