【发布时间】:2012-12-06 10:11:09
【问题描述】:
我的代码有一些问题,需要看看您是否可以提供帮助。 我正在尝试对我的 ROOM Struct 进行冒泡排序,代码如下。 差不多,房间 1 名称:z ... 房间 2 名称:a,我想对这些进行排序,以便显示 A、B 等。
问题:当我输出链接列表时,这种排序会使某些节点消失。例如,在它排序 Z > A 并放在 TOP 之后,当我去打印我的链接列表时,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;
}
}
}
【问题讨论】:
-
那么......这段代码有什么问题?错误的结果或一些内存问题?
-
当我输出我的链表时,它几乎把 Z 放在了顶部,而 A 消失了。
-
好像你的循环构建错误。
标签: c sorting linked-list