所以我试图根据名称对链表进行排序,从小到大。它对它进行排序,但它以相反或错误的方式对其进行排序。
"insert a 1"
"insert b 2"
"insert c 3"
"print"
这是我运行时输入的样子。
c/3
b/2
a/1
输出
a/1
b/2
c/3
如果尝试更改我的排序方法条件,但它仍然以错误的方式对其进行排序。我似乎无法找到这个错误。任何帮助将不胜感激。但我的输出应该看起来像这样
期望的输出
--spawn_strategy=standalone
答案 0 :(得分:0)
如果您在每个插入后排序,则不需要完整的冒泡排序,只需一轮。
void sort()
{
struct node *ptr1 = list;
char *tmpname;
int tmpnum;
while (ptr1->next != NULL) {
if (strcmp(ptr1->name, ptr1->next->name) > 0) {
// swap content in this case, not the nodes
tmpname = ptr1->name;
tmpnum = ptr1->num;
ptr1->name = ptr1->next->name;
ptr1->num = ptr1->next->num;
ptr1->next->name = tmpname;
ptr1->next->num = tmpnum;
}
ptr1 = ptr1->next;
}
}