6-6 求单链表结点的阶乘和 (15分)

本题要求实现一个函数,求单链表L结点的阶乘和。这里默认所有结点的值非负,且题目保证结果在int范围内。

函数接口定义:
int FactorialSum( List L );

其中单链表List的定义如下:

typedef struct Node PtrToNode;
struct Node {
int Data; /
存储结点数据 /
PtrToNode Next; /
指向下一个结点的指针 /
};
typedef PtrToNode List; /
定义单链表类型 */

裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>

typedef struct Node PtrToNode;
struct Node {
int Data; /
存储结点数据 /
PtrToNode Next; /
指向下一个结点的指针 /
};
typedef PtrToNode List; /
定义单链表类型 */

int FactorialSum( List L );

int main()
{
int N, i;
List L, p;

scanf("%d", &N);
L = NULL;
for ( i=0; i<N; i++ ) {
    p = (List)malloc(sizeof(struct Node));
    scanf("%d", &p->Data);
    p->Next = L;  L = p;
}
printf("%d\n", FactorialSum(L));

return 0;

}

/* 你的代码将被嵌在这里 */

输入样例:
3
5 3 6

输出样例:
846

简单熟悉链表操作,难度不大。

int FactorialSum(List L) {
    
    
    int i, sum = 0, ab = 1;
    while (L!= NULL) {
    
    
        i =L->Data;
        for (i = 1; i <= L->Data; i++) {
    
    
            ab = ab * i;
        }
        sum = sum + ab;
        ab = 1;
        L = L -> Next;
    }
    return sum;
}

猜你喜欢

转载自blog.csdn.net/m0_46200758/article/details/104261159