Я пытаюсь поменять два указателя одного связанного списка, используя сортировку пузырьков. Я сделал функцию сравнения, и ее работа хорошая. В функции свопинга своп работает хорошо, мне удалось поменять местами между узлом и node->next
, хотя связанный список «потерял» информацию об узле (после обмена), поэтому первый узел в связанном Список: node->next
. Я использую общую функцию, которая сортирует пузырь и вызывает функцию сравнения и функцию подкачки.bubble сортировать связанный список, swapping указатели. C
Любая идея, почему это происходит?
void swap_arr(void **arr,int i , int j)
{
Team *teamList = (Team*) arr ;
Team *teamI = (Team*) arr , *teamJ ;
Team *temp ;
Team *temp1;
int z;
// Receives instead i
for(z=0; z<i; z++)
teamI = teamI->next;
//teamJ is the i+1
teamJ = teamI->next;
temp = teamI;
temp1 = teamJ->next;
teamI = teamJ ;
teamJ = temp;
if (temp1->next->next==NULL)
teamJ->next = NULL;
else
teamJ->next = temp1->next;
teamI->next = teamJ;
if (temp1==NULL)
teamJ->next=NULL;
else
teamJ->next = temp1;
}
Эта проблема может быть решена с помощью отладчика. –
Что такое параметр 'j'? – wildplasser
j = i + 1, «место» второго узла мне нужно поменять местами. havnt действительно нашел для него использование в коде, но мне пришлось сохранить его здесь из-за инструкций h.w – Buzi