BJFU-216-基于链式存储结构的图书信息表的修改

时间:2019-10-26
本文章向大家介绍BJFU-216-基于链式存储结构的图书信息表的修改,主要包括BJFU-216-基于链式存储结构的图书信息表的修改使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#include<stdio.h>
#include<stdlib.h>
#define MAX 100

typedef struct Book{
    double no;
    char name[MAX];
    double price;
    struct Book * next;
}Book,*BList;
//创建列表
void CreatList(BList &B)
{
    //头插法创建单链表
    B = (BList)malloc(sizeof(Book));
    B->next = NULL;
    BList rear = B;
    while(1)
    {
       BList p = (BList)malloc(sizeof(Book));
       scanf("%lf",&p->no);
       scanf("%s",p->name);
       scanf("%lf",&p->price);
       if(p->no==0&&p->name[0]=='0'&&p->price==0) break;
       rear->next = p;
       p->next = NULL;
       rear = p;

    }
}
//遍历
void traverse(BList B)
{
    BList p = B->next;
    while(p)
    {
        printf("%.0f ",p->no);
        printf("%s ",p->name);
        printf("%.2f",p->price);
        printf("\n");
        p = p->next;
    }
}
//获得平均值并返回其值
double getAvar(BList B)
{
    BList p = B->next;
    double sum=0.0;
    int i = 0;
    while(p)
    {
        sum+=p->price;
        p = p->next;
        i++;
    }

    return sum/i;
}
//按题意修改价格
void alter(BList &B)
{
    BList p = B->next;
    while(p)
    {
        if(p->price<getAvar(B)) p->price = p->price*(1+0.2);
        else p->price = p->price*(1+0.1);
        p = p->next;
    }
}


int main()
{
    BList B;
    CreatList(B);
    printf("%.2f\n",getAvar(B));
    alter(B);
    traverse(B);
    return 0;
}

原文地址:https://www.cnblogs.com/wwww2/p/11745525.html