链接列表和功能

时间:2013-12-07 02:42:28

标签: c list

我的程序将名称和年龄属性添加到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值?

2 个答案:

答案 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的指针。此外,不需要指向最后一个人。