PTA之求单链表结点的阶乘和
题目描述
本题要求实现一个函数,求单链表L
结点的阶乘和。这里默认所有结点的值非负,且题目保证结果在int
范围内。
时间限制: 400ms内存限制: 64MB代码长度限制: 16KB
函数接口定义:
int FactorialSum( List L );
其中单链表List
的定义如下:
typedef struct Node *PtrToNode;
struct Node {
int Data; /* 存储结点数据 */
PtrToNode Next; /* 指向下一个结点的指针 */
};
typedef PtrToNode List; /* 定义单链表类型 */
裁判测试程序样例:
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 typedef struct Node *PtrToNode; 5 struct Node { 6 int Data; /* 存储结点数据 */ 7 PtrToNode Next; /* 指向下一个结点的指针 */ 8 }; 9 typedef PtrToNode List; /* 定义单链表类型 */ 10 11 int FactorialSum( List L ); 12 13 int main() 14 { 15 int N, i; 16 List L, p; 17 18 scanf("%d", &N); 19 L = NULL; 20 for ( i=0; i<N; i++ ) { 21 p = (List)malloc(sizeof(struct Node)); 22 scanf("%d", &p->Data); 23 p->Next = L; L = p; 24 } 25 printf("%d\n", FactorialSum(L)); 26 return 0; 27 } 28 /* 你的代码将被嵌在这里 */
输入样例:
3
5 3 6
输出样例:
846
个人代码
思路:
简单粗暴,直接遍历整个list,并且在此过程中计算所有节点的阶乘的值,并相加
1 int FactorialSum( List L ) 2 { 3 List q=L; 4 int j,x,sum = 0; 5 while(q != NULL) 6 { 7 x=1; 8 for(j=2;j <= q->Data; j++) 9 x *= j; 10 sum+=x; 11 q = q->Next; 12 } 13 return sum; 14 }
本文来自博客园,作者:Arthurian,转载请注明原文链接:https://www.cnblogs.com/Arthurian/p/9079263.html
欢迎邮件交流:zhuanxinxin@aliyun.com