我在对链表中的节点进行排序时遇到一些问题。我能够成功实现列表本身,但是当我尝试对列表进行排序时却失败了。我相信这与我尝试比较集合类型的引用指针有关。我对指针或一般的C ++编程不是很有经验。如果有人能帮助我指出正确的方向,我将不胜感激。
void sortNodes()
{
int y, tmp;
y = nodeCount();
Node *curr, *prev;
for (int i = 0; i < y; i++)
{
curr = root;
for (int j = 0; j < y; j++)
{
prev = curr;
curr = curr->next;
if (prev->x > curr->x)
{
tmp = prev->x;
prev->x = curr->x;
curr->x = tmp;
}
}
}
curr = 0;
prev = 0;
}
最佳答案
您的第二个循环迭代了太多次(它运行y
次,每次访问curr = curr->next
之前都执行curr->x
)。同样,您不必每次都一直运行第二个循环,第一次运行后,最后一个节点将包含最大值,两次运行后,最后两个节点将具有最大值,依此类推。
否则对我来说看起来像是一个冒泡的事情。如果您喜欢这种事情...
关于c++ - 通过指针比较聚合类型的成员值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17665979/