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

匿名 (未验证) 提交于 2019-12-03 00:30:01

题目:https://pintia.cn/problem-sets/14/problems/738

#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; } int FactorialSum(List L){     int i; 	int sum,totalsum=0; 	while(L!=NULL){ 		sum=1; 		for(i=L->Data;i>=1;i--){ 			 sum=sum*i; 		} 		totalsum+=sum; 		L=L->Next;  	} 	return totalsum; } 

要掌握下面三个点:可能会对单链表理解的深入一些

//定义了L,p两个单链表,也意味着链表的头指针

//表示这个头指针不指向任何一个节点(

p->Next = L;//表示p指向的节点的指针域为L

//当指针p赋给L的时候,指针L的值也就改变了,即L和p指向同一个节点

看下面的图,可能理解的好一点:



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!