#include<iostream>
#include<string.h>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status; //声明类型int类型为Status
#define MAXSIZE 10000 //图书表可能达到的最大长度
typedef struct tagBook
{
char no[20],name[50];
float price;
}Book;
typedef struct LNode
{
Book data;
struct LNode *next;
}LNode,*LinkList;
Status ListEmpty(LinkList L);
Status ListLength_L(LinkList L);
Status GetElem_L(LinkList L,int i,Book &e);
int main()
{
Status init(LinkList &L);
Status CreationList_F_behind(LinkList &L,char *no,char *name,float &price);
Status CreationList_F_ahead(LinkList &L,char *no,char *name,float &price);
Status PrintList_F(LinkList &L);
Status SortList_F(LinkList &L);//冒泡
Status SelectSortList_F(LinkList &L);//插入
Status avg(LinkList &L);
LinkList L,head;
init(L); //生成新结点作头结点,用头指针L指向头结点。头结点的指针域置空。
head=L; //头指针
char no[20],name[50]; //定义no,name为char数组
float price; //定义price为float
while(cin>>no>>name>>price) //输入no、name、price
{
if(!strcmp(no,"0")&&!strcmp(name,"0")&&price==0.0)
break; //0 0 0 时结束
CreationList_F_behind(L,no,name,price);//存入书信息
}
//cout<<ListLength_L(head)<<endl;
//SortList_F(head);
avg(head);
PrintList_F(head); //输入书信息
return 0; //0:表示无错误退出。1:表示异常退出。
}
Status avg(LinkList &L)
{
float avg_price;
if(!ListEmpty(L))
{
LinkList p=L->next;
float sum=0;
while(p)
{
sum+=p->data.price;
p=p->next;
}
avg_price=sum/ListLength_L(L);
printf("%.2f\n",avg_price);
p=L->next;
while(p)
{
if(p->data.price<avg_price)
{
p->data.price*=1.2;
}else
{
p->data.price*=1.1;
}
p=p->next;
}
}
return OK;
}
Status SelectSortList_F(LinkList &L)//插入排序
{
LinkList p,q;
for(p=L->next->next;p;p=p->next)
for(q=L->next;q->next!=p;q=q->next)
{
if(q->data.price<q->next->data.price)
{
Book B;
B=q->data;
q->data=q->next->data;
q->next->data=B;
}
}
return OK;
}
Status SortList_F(LinkList &L)//冒泡排序
{
int n=ListLength_L(L);
LinkList p;
if(!ListEmpty(L))
{
for(int i=1;i<=n-1;i++)
{
p=L->next;
int j=0;
while(p&&j<n-i)
{
if(p->data.price<p->next->data.price)
{
Book t=p->data;
p->data=p->next->data;
p->next->data=t;
}
p=p->next;
++j;
}
}
}
return OK;
}
Status GetElem_L(LinkList L,int i,Book &e)
{
return OK;
}
Status PrintList_F(LinkList &L)
{
if(!ListEmpty(L))
{
L=L->next;
while(L)
{
cout<<(*L).data.no<<" "<<L->data.name<<" ";
printf("%.2f\n",L->data.price);
L=L->next;
}
}
return OK;
}
Status CreationList_F_ahead(LinkList &L,char *no,char *name,float &price)//前插法输出逆序
{
LinkList p=new LNode; //生成新结点p
p->next=L->next;
//
strcpy(p->data.no,no); //复制书号
strcpy(p->data.name,name);
p->data.price=price;
L->next=p;
return OK; //OK=1,返回真
}
Status CreationList_F_behind(LinkList &L,char *no,char *name,float &price)//后插法输出按顺序
{
LinkList p=new LNode; //生成新结点p
//
strcpy(p->data.no,no); //复制书号
strcpy(p->data.name,name);
p->data.price=price;
p->next=NULL;
L->next=p;
L=p;
return OK; //OK=1,返回真
}
Status init(LinkList &L)
{
L=new LNode;//L为Lnode类型的指针,LinkList p=LNode *p,new就是动态分配一个LNode堆空间,赋值给L
L->next=NULL;
return OK;
}
Status ListEmpty(LinkList L){
//若L为空表,则返回1,否则返回0
if(L->next) //非空
return 0;
else
return 1;
}
Status ListLength_L(LinkList L){
//返回L中数据元素个数
LinkList p;
p=L->next; //p指向第一个结点
int i=0;
while(p){//遍历单链表,统计结点数
i++;
p=p->next;
}
return i;
}
基于链式存储结构的图书信息表的修改
发布时间: 2017年9月18日 00:29 最后更新: 2017年11月27日 16:50 时间限制: 1000ms 内存限制: 128M
描述
定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据完成图书信息表的创建,然后计算所有图书的平均价格,将所有低于平均价格的图书价格提高20%,所有高于或等于平均价格的图书价格提高10%,最后逐行输出价格修改后的图书信息。
输入
输入n+1行,前n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第n+1行是输入结束标志:0 0 0(空格分隔的三个0)。其中书号和书名为字符串类型,价格为浮点数类型。
输出
总计n+1行,第1行是修改前所有图书的平均价格,后n行是价格修改后n本图书的信息,每本图书信息占一行,书号、书名、价格用空格分隔。其中价格输出保留两位小数。
样例输入1
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00
0 0 0
样例输出1
43.88
9787302257646 Data-Structure 42.00
9787302164340 Operating-System 55.00
9787302219972 Software-Engineer 38.40
9787302203513 Database-Principles 43.20
9787810827430 Discrete-Mathematics 43.20
9787302257800 Data-Structure 68.20
9787811234923 Compiler-Principles 68.20
9787822234110 The-C-Programming-Language 45.60
网友评论