コードに問題があり、助けていただけるかどうかを確認する必要があります。ROOM Struct をバブルソートしようとしていますが、コードは以下のとおりです。ほぼ、部屋 1 の名前: z ... 部屋 2 の名前: a、これらを並べ替えて、A、B などを表示するようにします。
問題: リンク リストを出力すると、この並べ替えによって特定のノードが消えてしまいます。たとえば、Z > A を並べ替えて先頭に配置した後、リンク リストを印刷すると A が消えてしまいます。
助けてくれてありがとう!
void sortRoomsByName(int count, ROOM *head)
{
int i;
int j;
for(i = count ; i > 1 ; i-- ) //outer loop
{
ROOM *temp;
ROOM *swap1;
swap1 = head;
for(j = 0 ; j < count-1 ; j++ ) //inner loop
{
if(strcmp(swap1->roomName,swap1->nextRoom->roomName)<0) //compares names and swaps
{
ROOM *swap2;
swap2 = swap1->nextRoom;
swap1->nextRoom = swap2->nextRoom;
swap2->nextRoom = swap1;
if(swap1 == head)
{
head = swap2;
swap1 = swap2;
}
else
{
swap1 = swap2;
temp->nextRoom = swap2;
}
}
temp = swap1;
swap1 = swap1->nextRoom;
}
}
}