我在对链表中的节点进行排序时遇到一些问题。我能够成功实现列表本身,但是当我尝试对列表进行排序时却失败了。我相信这与我尝试比较集合类型的引用指针有关。我对指针或一般的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/

10-15 05:54