У меня есть следующий короткий код, который является решением проблемы обращения к связанному списку.Рекурсивная инверсия односвязного списка
void backwardslist(atom** head) {
atom* first;
atom* second;
if (*head == NULL) return; //if list is empty
first = *head;
second = first->next; // intuitive
if (second == NULL) return;
backwardslist(&second); // recursive call with 2nd one as head, after we got variables
first and second
first->next->next = first; // when we get to the end, we rearrange it
first->next = NULL; // so last one is pointing to first, first is pointing to NULL
*head = second; // I dont understand this part, so the head is changing from the last,
to the second element as the recursion goes to the beginning or am i
missing something?
}
не второй = (указатель на второй из двух указателей в рекурсии)?
поэтому первый раз, я понимаю, он должен указывать на последний,
но рекурсия строит назад, его постоянно меняется * голова на второй.
Что находится во втором атме, которое используется?
Спасибо ребята
принцип рекурсии: -Он работает для пустого списка и списка с 1 элементом -Первый элемент становится последним -I вызовите мою функцию в остальной части списка – jambono