• 求单链表结点的阶乘和


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

    本题要求实现一个函数,求单链表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
    ", FactorialSum(L));
    26 
    27     return 0;
    28 }
    29 
    30 /* 你的代码将被嵌在这里 */
    View Code

    输入样例:

    3
    5 3 6

    输出样例:

    846

    我的答案:

     

     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
    ",6*5*4*3*2*1);
    26     printf("%d
    ", FactorialSum(L));
    27 
    28 
    29     return 0;
    30 }
    31 int FactorialSum( List L ){
    32     
    33      int sum=0;
    34         while(L)
    35         {
    36             sum+=fun(L->Data);
    37             L=L->Next;
    38         }
    39     return sum;
    40 }
    41 int fun(int n){
    42     while(n==1)
    43         return 1;
    44     while (n>1)
    45         return fun(n-1)*n;
    46     }
    View Code
  • 相关阅读:
    解决IE新开窗口无法显示内容的问题
    日历控件
    关于索引,我们可以知道的更多 全表扫描和索引扫描
    C#构造函数的小说明
    动态创建的组件的ID设定
    正则表达式使用详解
    “运行”命令全集
    数组型参数
    接口实现的继承机制
    读取XML文件
  • 原文地址:https://www.cnblogs.com/yonyong/p/8675394.html
Copyright © 2020-2023  润新知