【发布时间】:2011-04-23 12:20:47
【问题描述】:
我在编程的排序部分还不是很先进,所以我在寻找算法方面的帮助。
void sortList()
{
Item_PTR tmpNxt = current->nextItem;
Item_PTR tmpPTR = current;
int a, tmp;
while(tmpNxt != NULL)
{
a = tmpPTR->value;
while(tmpNxt != tmpPTR && tmpNxt->value < a)
{
tmp = a;
tmpPTR->value = tmpNxt->value;
tmpNxt->value = tmp;
tmpPTR = tmpPTR->nextItem;
}
tmpPTR = current;
tmpNxt = tmpNxt->nextItem;
}
}
排序前的列表状态:9 8 7 6 5 4 3 2 1 排序后:1 9 8 7 6 5 4 3 2
我不知道为什么...我在纸上玩了很多电脑,我觉得它应该可以工作...但也许其他人会发现问题。
Current 是一个全局指针,它始终具有列表中第一个/顶部元素的位置。
【问题讨论】:
-
你的意思是“9 8 7 6 5 4 3 2 1”是排序前的列表状态,“1 9 8 7 6 5 4 3 2”是排序后的状态吗?
-
是的^^;抱歉,我会在第一篇文章中说明。
-
为什么不使用调试器逐步完成?
-
使用 txt 编辑器和终端... :\
-
使用 gdb:gnu.org/software/gdb 这是一个命令行调试器,如果你在 linux 上,它可能已经安装了。
标签: c sorting linked-list