У меня есть класс, который по существу является псевдо-библиотекой. Драйвер создает библиотеку NoviceLibrary, которая может делать разные вещи, такие как добавление книг в библиотеку (узлы связанного списка ListNode), удаление книг и т. Д.Перетасовка связанного списка
ShuffleBooks() - это самая последняя функция, которую я должен написать. Все остальное работает и может добавлять/удалять книги. Эта функция должна помещать узлы в связанном списке в случайном порядке. Я не могу использовать указатель на хвост, который я видел в других алгоритмах. Я не могу использовать массивы. Я думал, что я написал, что есть указатели p1 и p2, которые меняют узлы в списке. Программа останавливается и не дает мне полезной информации в журнале.
void shuffleBooks (int bookCount)
{
int r1 = rand() % bookCount;
int r2 = rand() % bookCount;
ListNode *p1 = head;
ListNode *p2 = head;
// Here I am trying to get the swap to happen 4 times the bookCount
for (int i = 0; i < bookCount*4; i++)
{
for (int i = 0; i < r1; i++)
p1 = p1->next;
for (int i = 0; i < r2; i++)
p2 = p2->next;
swap(p1->bookVal, p2->bookVal);
}
}
Код идет в вопрос, пожалуйста (в противном случае вопрос становится бесполезным, когда ссылка не работает) – Borgleader
Просьба предоставить [MCVE] (http://www.stackoverflow.com/help/mcve) – Barry
_ «Я не уверен где я ошибаюсь. »_ - Все в порядке, мы не уверены, что вы спрашиваете, так что мы даже. –