题目:
本题要求实现一个函数,求单链表L
结点的阶乘和。这里默认所有结点的值非负,且题目保证结果在int
范围内。
函数接口定义:
int FactorialSum( List L );
其中单链表List
的定义如下:
typedef struct Node *PtrToNode;
struct Node {
int Data; /* 存储结点数据 */
PtrToNode Next; /* 指向下一个结点的指针 */
};
typedef PtrToNode List; /* 定义单链表类型 */
题目分析:
根据题目,我们可以把问题分解成三个步骤:
- 遍历访问结点
- 求结点数据的阶乘
- 求和
题目解答:
int FactorialSum( List L)
{
int sum=0;
//遍历结点
while(L){
//取出结点中的数据
int num=L->Data;
//对num求阶乘
int temp=1;
while(num>0){
temp*=num;
num--;
}
//对阶乘的结果求和
sum+=temp;
//L访问到下一个结点
L=L->Next;
}
return sum;
}