Почему вы хотите использовать пузырьковую сортировку? Это классический пример алгоритма, который по сути всегда неправильный выбор!
Если вы делаете это в реальном коде, просто используйте стандартную коллекцию (std::list
, если вы настаиваете на связанном списке, вероятно, std::vector
, если вы в здравом уме), а затем используйте std::sort
, чтобы сделать сортировка.
Если вы делаете это для чего-то вроде домашней работы и действительно должны использовать свою собственную структуру списка и ужасный алгоритм, тогда вы реализуете свою итерацию и сравнение, используя указатели вместо индексов, поэтому ваше сравнение будет выглядеть примерно так
if (pos->index > pos->next->index)
/* swap items */
Вы (вероятно) также захотите основывать, по крайней мере, свой внутренний цикл на операциях с указателями, а не на целых числах и индексировании - его операция приращения, вероятно, будет выглядеть примерно так: pos=pos->next
.
Также обратите внимание, что с односвязным списком трудно выполнить своп с текущим узлом, поэтому вам часто требуется рассмотреть следующий узел и следующий после него (по крайней мере, когда вы можете - т. Е. Не иметь дело с первый узел).