输出链表中最大三个结点的和

img


请教大家这个有什么问题吗,得不到正确结果

#include <limits.h>

int max3()
{
    int max[3] = {INT_MIN, INT_MIN, INT_MIN};
    node *p = head;
    while (*p)
    {
        if (p->data > max[0])
        {
            max[2] = max[1];
            max[1] = max[0];
            max[0] = p->data;
        }
        else if (p->data > max[1])
        {
            max[2] = max[1];
            max[1] = p->data;
        }
        else if (p->data > max[2])
        {
            max[2] = p->data;
        }
        p = p->next;
    }
    int sum = 0;
    for (int i = 0; i < 3; i++)
        sum += max[i];
    return sum;
}