首页 > 其他分享 >216基于链式存储结构的图书信息表的修改

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

时间:2025-01-22 14:28:29浏览次数:3  
标签:216 存储 name temp price head tail 链式 图书

描述

定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据完成图书信息表的创建,然后计算所有图书的平均价格,将所有低于平均价格的图书价格提高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
#include<bits/stdc++.h>
using namespace std;

#define Max 1000

struct Book{
	char id[50];
	char name[50];
	float price;
	Book* next;
};

int main(){
	Book *head=NULL,*tail=NULL,*temp=NULL;
	
	int count=0;
	float sum=0;
	
	while(1){
		char id[50];
		char name[50];
		float price;
		cin>>id>>name>>price;
		
		if(strcmp(id,"0")==0&&strcmp(name,"0")==0&&price==0)
		{
			break;
		}
		 // 分配新内存给temp
		temp = new Book;
		strcpy(temp->id,id);
		strcpy(temp->name,name);
		temp->price=price;
		sum+=price;
		count++;
		
		if(head==NULL&&tail==NULL){
			head=temp;
			tail=temp;
		}
		else{
			tail->next=temp;
			tail=tail->next;
			
		}
		
	}
	sum=sum/count;
	cout<<fixed<<setprecision(2)<<sum<<endl;
	
	temp=head;
	for(int i=0;i<count;i++){
		if(temp->price>=sum){
			temp->price+=temp->price*0.1;
		}
		else{
			temp->price+=temp->price*0.2;
		}
		temp=temp->next;
	}
	temp=head;
	for(int i=0;i<count;i++){
		cout<<temp->id<<" "<<temp->name<<" "<<fixed<<setprecision(2)<<temp->price<<endl;
		temp=temp->next;
	}
	// 释放内存
	while (head != NULL) {
        temp = head;
        head = head->next;
        delete temp;
    }
}

标签:216,存储,name,temp,price,head,tail,链式,图书
From: https://blog.csdn.net/weixin_70149739/article/details/145292950

相关文章

  • 数据结构2——线性表的链式存储
    前言顺序存储结构的缺点:①插入、删除操作需要移动大量的元素。② 预先分配空间需按最大空间分配,利用不充分。③表容量扩充十分不方便(可能会产生效率问题)。而链式存储结构恰好弥补了顺序存储这些缺陷。1.认识线性表链式存储1.1线性表链式存储的构成①可用一组任意......
  • Redis Stream:实时数据流的处理与存储
    RedisStream是Redis5.0引入的一个强大的数据结构,专门用于处理实时数据流。它类似于ApacheKafka和RabbitMQ等消息队列系统,但集成在Redis这个内存数据库中,使得Redis不仅能处理缓存和存储,还能高效地处理实时数据流。本文将深入探讨RedisStream的特性、使用方法以及......
  • 顺序存储和链式存储
    数据结构数据结构是计算机存储、组织数据的方式数据结构是指互相之间存在一种或多种特定关系的数据元素的集合比如自定义的一个类也可以称为一种数据结构,类是一个自己定义的数据组合规则数据结构简单来说就是人定义的存储数据和表示数据之间关系的规则常用的数据结构数组、......
  • C语言实现顺序存储线性表
    ////Createdbystevexiaohuzhaoon2025/1/20.///****线性表的顺序存储结构实现*特点:逻辑上相邻的元素,物理上也相邻**/#include<stdio.h>#include<stdlib.h>#defineMAXSIZE100//定义线性表的最大长度//1.定义图书结构体Booktypedefstr......
  • 栈的顺序存储代码
    #include<stdio.h>#include<stdlib.h>#pragmawarning(disable:4996)#defineelemTypeint#definemaxSize50typedefstructseqStack{   elemTypearr[maxSize];   inttop;}seqStack;voidinitStack(seqStack*stack){   for(inti=0;......
  • 将IDEA的setter代码模板改成链式setter
    setter传统模式UserInfouserInfo=newUserInfo();userInfo.setUserId("zhangsan");userInfo.setUserName("张三");userInfo.setAge(18);每一行都需要分号来隔断,影响编码效率。链式setterUserInfouserInfo=newUserInfo().setUserId("zhangsan").setUserNam......
  • 2025-01-18:施咒的最大总伤害。用go语言,一个魔法师掌握了多种不同的咒语,每个咒语对应一
    2025-01-18:施咒的最大总伤害。用go语言,一个魔法师掌握了多种不同的咒语,每个咒语对应一个伤害值,这些伤害值存储在数组power中,其中可能会有多个咒语具有相同的伤害值。使用某个特定伤害值为power[i]的咒语后,魔法师不能再使用伤害值为power[i]-2、power[i]-1、power[i]+1......
  • 2025-01-18:施咒的最大总伤害。用go语言,一个魔法师掌握了多种不同的咒语,每个咒语对应一
    2025-01-18:施咒的最大总伤害。用go语言,一个魔法师掌握了多种不同的咒语,每个咒语对应一个伤害值,这些伤害值存储在数组power中,其中可能会有多个咒语具有相同的伤害值。使用某个特定伤害值为power[i]的咒语后,魔法师不能再使用伤害值为power[i]-2、power[i]-1、power[......
  • Redis实训:社交关注关系存储任务
    一、实验目的1. 理解Redis的安装、配置及基本操作。2. 掌握Redis的不同数据类型及相应操作方法。3. 学习使用Java客户端连接Redis,并进行数据操作。4. 实践使用Redis存储社交关注关系的功能。二、实验环境准备1. JAVA环境准备:确保JavaDevelopmentKit(JDK)已......
  • GaussDB事务存储组件
    事务存储组件云原生数据库支持透明多写,所有节点对等,每个计算节点都可以读写全部的数据页面,事务在本节点执行,没有分布式事务。每个计算节点都有Localbufferpool,采用Remotememorypool扩展计算节点的内存,在多个计算节点之间共享buffer地址,避免页面在多个计算节点之间传来传去。......