数据结构实验一,第16题:基于链式存储结构的图书信息表的最爱图书的查找

本实验涉及创建一个包含图书信息(书号、书名、价格)的链表。用户输入图书数据构建链表,并按指定最爱图书名字进行查找。如果找到,输出图书信息;否则,提示未找到。
摘要由CSDN通过智能技术生成

描述

定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的最爱图书的名字,查找最爱的图书,输出相应图书的信息。

输入

总计n+m+2行。首先输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。其中书号和书名为字符串类型,价格为浮点数类型。然后输入m+1行,其中,第一行是一个整数m,代表查找m次,后m行是每次待查找的最爱图书名字。

输出

若查找成功: 总计输出m*(k+1)行,对于每一次查找,第一行是最爱图书数目(同一书名的图书可能有多本),后k行是最爱图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,其中价格输出保留两位小数。 若查找失败: 只输出以下提示:抱歉,没有你的最爱!

输入样例 1

8
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
2
Java-Programming-Language
Data-Structure

输出样例 1

Sorry,there is no your favourite!
2
9787302257646 Data-Structure 35.00
9787302257800 Data-Structure 62.00

代码

#include <bits/stdc++.h>
using namespace std;
typedef struct book {
   
	string ISBN;
	string Name;
	double Price;
	struct book* next;
}book, * booklist;

typedef struct bookname {
   
	string name;
	struct bookname* next;
}bookname,*pbookname;

void 
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于链式存储结构图书信息的创建和输出的C++代码: ``` #include <iostream> using namespace std; struct Book { string name; string author; string publisher; int year; Book *next; }; void create(Book *&head) { head = new Book; cout << "请输入书名:"; cin >> head->name; cout << "请输入作者:"; cin >> head->author; cout << "请输入出版社:"; cin >> head->publisher; cout << "请输入出版年份:"; cin >> head->year; head->next = nullptr; Book *p = head; char choice; do { p->next = new Book; p = p->next; cout << "请输入书名:"; cin >> p->name; cout << "请输入作者:"; cin >> p->author; cout << "请输入出版社:"; cin >> p->publisher; cout << "请输入出版年份:"; cin >> p->year; p->next = nullptr; cout << "是否继续输入?(y/n)"; cin >> choice; } while (choice == 'y' || choice == 'Y'); } void output(Book *head) { if (head == nullptr) { cout << "链表为空!" << endl; return; } Book *p = head; cout << "图书信息如下:" << endl; cout << "书名\t作者\t出版社\t出版年份" << endl; while (p != nullptr) { cout << p->name << "\t" << p->author << "\t" << p->publisher << "\t" << p->year << endl; p = p->next; } } int main() { Book *head = nullptr; create(head); output(head); return 0; } ``` 在主函数中,首先定义一个指向链表头结点的指针`head`,然后调用`create`函数来创建链表,最后调用`output`函数来输出链表中的图书信息。在`create`函数中,先创建头结点,然后让指针`p`指向头结点,使用`do-while`循环来不断输入图书信息并创建新节点,将指针`p`指向新节点,直到用户选择不再输入为止。在`output`函数中,先检查链表是否为空,如果是则输出提示信息,否则使用指针`p`遍历链表并输出每个节点的图书信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值