Я предполагаю, что групп / имен / элементов всегда четыре и всегда c
, a
, d
и b
. В этом предположении это легко: создать четыре списка, один для элементов c
, один для элементов a
и т. Д. Пройдите по связанному списку; для каждого элемента добавьте его в соответствующий новый список. Вы можете использовать switch
в строках. Наконец добавьте четыре новых списка в правильном порядке.
Это займет O (n) время и O (n) пространство.
Если по какой-то причине (я не знаю, что это может быть) вы не хотите создавать четыре списка, просто сохраните четыре ссылки на четыре места в отсортированном списке, где c
, a
, d
и b
элементы должны быть вставлены. Это потребует решения о том, куда указывать, если в списке еще нет всех четырех имен.
Удачного кодирования.