编写一个算法实现n个整数类型数据的线性链表的逆置并实现整数类型数据的线性链类中的平均数。
#include<stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node *link;
}LNode,*LinkList; //创建链表结构体
LinkList Creat(int n){ //创建链表
LinkList p,r = NULL,list=NULL;
for (int i=1; i<=n; i++) {
p=(LinkList)malloc(sizeof(LNode));
p->data=i;
p->link=NULL;
if (list==NULL)
list=p;
else
r->link=p;
r=p;
}
return list;
}
void print(LinkList list){ //打印链表
LinkList p=list;
while (p!=NULL) {
printf("%d ",p->data);
p=p->link;
}
}
void Reverse(LinkList &list){ //链表逆置
LinkList p=NULL;
p=list->link;
list->link=NULL;
LinkList r=NULL;
LinkList head=NULL;
head=(LinkList)malloc(sizeof(LNode));
while (p!=NULL) {
r=p->link;
head->link=list;
p->link=NULL;
head->link=p;
p->link=list;
list=p;
p=r;
}
}
float aver(LinkList &list){ //求平均值
LinkList p=list;
float sum=0;
float n=0;
while (p!=NULL) {
sum=sum+p->data;
p=p->link;
n=n+1;
}
return sum/n;
}
int main(){
LinkList head;
head=Creat(4);
print(head);
printf("\n");
Reverse(head);
print(head);
printf("\n");
printf("平均数为:%f\n",aver(head));
return 0;
}