# BJFU-218-基于链式存储结构的图书信息表的最贵图书的查找

#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,int n)
{
B = (BList)malloc(sizeof(Book));
B->next = NULL;
BList rear = B;
for(int i=1;i<=n;i++)
{
//这里用的是尾插法
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;
}
}
//获得最贵图书的价格，并返回其值
double getCost(BList &B)
{
BList p = B->next;
double cost = p->price;
int cout = 0;
while(p)
{
if(p->price > cost)
{
cost = p->price;
}
p = p->next;
}
return cost;
}
void traverse(BList B,int n,double cost)
{
BList p = B->next;
int cout = 0;
for(int i=1;i<=n;i++)
{
if(p->price==cost) cout++;     //计算最贵图书的个数
p = p->next;
}
printf("%d\n",cout);

BList q = B->next;
for(int i=1;i<=n;i++)
{

if(q->price==cost)           //如果图书的价格是cost，就输出
{
printf("%.0f ",q->no);
printf("%s ",q->name);
printf("%.2f",q->price);
printf("\n");

}
q = q->next;
}

}

int main()
{
BList B;
int n;
double cost;
scanf("%d",&n);
CreatList(B,n);
cost = getCost(B);
traverse(B,n,cost);
return 0;
}

posted @ 2019-10-26 20:52  wwww2  阅读(...)  评论(...编辑  收藏