#include<stdio.h> typedef struct node { int a; struct node* link; }Lnode, * linklist; linklist creat(int n) {//创建 linklist p, r = NULL, list = NULL; int a; int i; printf("请输入数据:\n"); for (i = 0; i < n; i++) { scanf_s("%d", &a); p = (linklist)malloc(sizeof(Lnode)); p->a = a; p->link = NULL; if (list == NULL) list = p; else r->link = p; r = p; } return(list); } linklist invert(linklist list) {//倒置 linklist p, q, r; p = list; q = NULL; while (p!=NULL) { r = q; q = p; p = p->link; q->link = r; } list = q; return(list); } void traverse(linklist list) {//遍历 linklist p; p = list; while (p != NULL) { printf("%d ", p->a); p = p->link; } } float sum(list) { linklist p; int sum=0,n=0; p = list; while (p != NULL) { sum = sum + p->a; n++; p = p->link; } return (float)sum / n; } int main() { printf("请输入链表长度:"); int n; linklist list; scanf_s("%d", &n); list = creat(n); list=invert(list); printf("倒置后为:"); traverse(list); printf("\n平均数为:%.2f", sum(list)); }