我的程序将名称和年龄属性添加到PERSONS列表中。我想要一个将“first”和“last”指针传递给此列表的函数。从这里开始,我希望程序从第一个指针开始,然后将该年龄添加到下一个,然后是下一个,直到到达最后一个指针。
例如,如果我的列表是:
Jane (36 yrs), Bob (14 yrs), Rachel (10 yrs)
我想要总结36 + 14 + 10 = 60
请帮忙!
到目前为止,我的功能原型是
int total_age(person **f, person **l)
{
int sum=0;
person *temp;
sum = sum + person->age;
}
如何从头到尾遍历每个person.age值?
答案 0 :(得分:1)
由于你说这是一个链表,我假设每个Person对象都有一个指向列表中下一个人的指针。我会称之为Person->next
。我还假设列表中最后一个人的next
值为NULL。
那么你只需要遍历列表,在每个节点上添加年龄。这只涉及创建一个while循环(并添加一个return语句):
int total_age(person **f, person **l)
{
int sum = 0;
person *temp = *f;
while (temp != NULL)
{
sum = sum + temp->age;
temp = temp->next;
}
return sum;
}
请注意,您实际上并不需要将列表中的最后一项传递给函数。
答案 1 :(得分:0)
首先,您必须迭代链表元素,例如:
int total_age(person *f)
{
int sum = 0;
for (person *p = f; p; p = p->next)
{
sum += p->age;
}
return sum;
}
如果您不打算更改第一个和最后一个指针,则只需将指针传递给person,而不是指向指向person的指针。此外,不需要指向最后一个人。