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

本文介绍了一种新颖的数据处理算法,通过遍历链表并计算每个元素对应的阶乘来实现链表元素的阶乘求和。该算法首先找到链表中的最大值以确定阶乘数组的大小,然后计算阶乘数组,最后遍历链表并累加各元素的阶乘值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int FactorialSum( List L )
{
  int max=0,sum=0;
  List p,head;
  head=L;
  p=head;
  while(p!=NULL)
  {
    if(max<p->Data)
    max=p->Data;
    p=p->Next;
  }
  int fa[max+1];
  fa[1]=1;
  for(int i=1;i<max+1;i++)
  fa[i]=fa[i-1]*i;
  p=head;
  while(p!=NULL)
  {
    sum+=fa[p->Data];
    p=p->Next;
  }
  return sum;

}

数据结构体好久没用了,这个题目很新奇。

注意阶乘首项的分配。

阶乘采用数组一次记录最大的完全部阶乘会比较省时间和内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值