#include
<stdio.h>
#include
<stdlib.h>
typedef
struct
aa
{
int
data;
struct
aa
*next;
}NODE;
int
fun(NODE
*h)
{
int
sum
=
0
;
NODE
*p;
/***********found**********/
p=h->next;
//因为不要求计算头结点,所以给P的值应该是链表的第一个值而不是头结点
while(p)
{
if(p->data%2==0)
sum
+=p->data;
/***********found**********/
p=p->next;
//这里计算和的任务是p在做而不是h,所以这里要用p
}
return
sum;
}
NODE
*creatlink(int
n)
{
NODE
*h,
*p,
*s;
int
i;
h=p=(NODE
*)malloc(sizeof(NODE));
for(i=1;
i<=n;
i++)
{
s=(NODE
*)malloc(sizeof(NODE));
s->data=rand()%16;
s->next=p->next;
p->next=s;
p=p->next;
}
p->next=NULL;
return
h;
}
void
outlink(NODE
*h,
FILE
*pf)
//
函数是要返回值的。
{
NODE
*p;
p
=
h->next;
fprintf(pf
,"\n\nTHE
LIST
:\n\n
HEAD
"
);
while(p)
{
fprintf(pf
,"->%d
",p->data
);
p=p->next;
}
fprintf
(pf,"\n");
}
void
outresult(int
s,
FILE
*pf)
//函数是要返回值的
{
fprintf(pf,"\nThe
sum
of
even
numbers
:
%d\n",s);
}
void
main()
//函数是要返回值的
{
NODE
*head;
int
even;
head=creatlink(12);
head->data=9000;
outlink(head
,
stdout);
even=fun(head);
printf("\nThe
result
:\n");
outresult(even,
stdout);
}
按照你要求改的,也不知道你用的是什么编译器,函数连返回值都没有。
但是我很郁闷,在我机器上执行结果一直是52
温馨提示:答案为网友推荐,仅供参考