PTA基礎程式設計題目集6-6求單鏈表結點的階乘和(函式題)
阿新 • • 發佈:2019-01-11
本題要求實現一個函式,求單鏈表L
結點的階乘和。這裡預設所有結點的值非負,且題目保證結果在int
範圍內。
函式介面定義:
1 int FactorialSum( List L );
其中單鏈表List
的定義如下:
1 typedef struct Node *PtrToNode; 2 struct Node { 3 int Data; /* 儲存結點資料 */ 4 PtrToNode Next; /* 指向下一個結點的指標 */ 5 }; 6 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 27 return 0; 28 } 29 30 /* 你的程式碼將被嵌在這裡 */
輸入樣例:
3
5 3 6
輸出樣例:
846
1 int FactorialSum( List L ) 2 { 3 int i; 4 int sum = 0; 5 while(L!=NULL) 6 { 7 int num = 1; 8 for(i=1;i<=L->Data;i++) 9 { 10 num=num*i; //求階乘 11 } 12 sum+=num; //每一個結點階乘的和 13 L=L->Next; //進行下一個結點的階乘求和 14 15 } 16 return sum; 17 }
將連結串列的資料域比對成一個數組更好理解,L->Data就是一個具體數。用num作為階乘,用sum求和。