Я бы порекомендовал посмотреть, будет ли связанный список соответствовать вашим потребностям.Специально прочитайте круглые связанные списки и двойные связанные списки.http://en.wikipedia.org/wiki/Linked_list
По сути, связанный список отслеживает набор элементов в заданном порядке.Вы начинаете с головного узла, головной узел указывает на следующий, который указывает на следующий, который указывает на следующий и т. Д.
В круговом связанном списке последний узел указывает на первый узел, завершающийкруг.В двусвязном списке узлы указывают на предыдущий узел, а также на следующий узел.Это решает проблему как обратного хода, так и обращения с последним игроком в списке.
Как правило, связанный список разбивается за длительное время поиска определенного узла, но вы, вероятно, могли бы сделать вещи болееэффективнее, обновляя ссылку на головной узел, чтобы он всегда был текущим игроком вместо статической начальной точки или чего-то подобного, что соответствует логике вашей игры.