尝试平均链表的元素时出错

Error trying to average the elements of a linked list

我想计算链表中元素的平均值:

.h

class List
{
public:
    List() { head = NULL; }
    void insertNode(int);//inserare nod la sfarsitul unei liste
    void printList();//afisare lista
    void deleteNode(int);
    void medie(float);

.cpp

void List::medie(float) {
    int count = 0;
    int sum = 0;
    int media = 0;
    Node* temp3 = head;
    while (temp3 != NULL) {
        count++;
        sum += temp3->val;
        temp3 = temp3->next;
    }
    media = (double)sum / count;
    return media;
}

我收到这个错误:

return value type doesn't match the function type

不知道怎么修复

函数声明为 return 类型 void

void medie(float);

所以这意味着它 return 什么都没有。但是在函数定义中有一个带有非空表达式的 return 语句。

return media;

因此编译器发出错误信息。

另外函数参数没有在函数内部使用。它的声明没有意义。

在此声明中

media = (double)sum / count;

将变量 sum 转换为类型 double 没有什么意义,因为结果被分配给类型为 int 的变量 media

该函数应按以下方式声明

double medie() const;

并定义为

double List::medie() const
{
    double sum = 0.0;
    size_t count = 0;

    for ( const Node *temp = head; temp != nullptr; temp = temp->next )
    {
        sum += temp->val; 
        ++count;
    }

    return count == 0 ? 0.0 : sum / count;
}