赞
踩
已知 first 为单链表的表头指针,链表中存储的都是整型数据,试写出实现下列运算的递归算法:
(1)求链表中的最大整数:
(2)求链表的结点个数。
(3)求链表中所有元素的平均值。
运行截图:
#include<stdio.h> #include<stdlib.h> #define MAXSIZE 100 #define OK 1 #define ERROR -1 #define OVERFLOW -2 typedef int status; typedef int ElemType; typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; status InitList (LinkList &L) { L = new LNode; L->next = NULL; return OK; } status AssigList(LinkList &L) { LinkList p,t; p = L; int e = 1; printf("请输入要插入的值以00结束:"); while(e) { scanf("%d",&e); if(e == 00) break; t = new LNode; t ->data = e; t ->next = NULL; p->next = t; p = t; } return OK; } status Max(LinkList &L) { int m; if(!L->next) return L->data; m = Max(L->next); return m >= L->data?m:L->data; } status Length(LinkList &L) { if(!L->next) return 1; else return Length(L->next)+1; } double Average(LinkList &L,int n) { double a; if(!L->next) return L->data; else { a = Average(L->next,n-1); return (a*(n-1)+L->data)/n; } } int main() { int m,n; double a; LinkList L; InitList(L); AssigList(L); m = Max(L->next); printf("最大值是:%d\n",m); m = Length(L->next); n = m; printf("结点个数:%d\n",m); a = Average(L->next,n); printf("平均值为:%f\n",a); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。