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

该博客介绍了如何使用链表数据结构建立图书信息表,并实现根据给定位置查找图书的功能。输入包括图书数据和查找次数及位置,成功查找则输出图书信息,否则提示图书不存在。
摘要由CSDN通过智能技术生成

描述

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

输入

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

输出

输出m行 若查找成功: 输出内容为第i次查询的指定位置上的一本图书的信息(书号、书名、价格),书号、书名、价格用空格分隔,其中价格输出保留两位小数。 若查找失败: 只输出以下提示:抱歉,最佳位置上的图书不存在!

输入样例 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
2
0

输出样例 1

9787302164340 Operating-System 50.00
Sorry,the book on the best position doesn’t exist!

代码

#include <bits/stdc++.h>
using namespace std;
typedef struct book {
   
	string isbn;
	string name;
	double price;
	struct book* next;
}book, 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于链式存储结构图书信息最佳位置图书查找可以通过以下步骤实现: 1. 首先,确定需要查找图书的关键字,例如书名、作者、ISBN等。 2. 从链表的头节点开始遍历,依次比较每个节点的关键字与需要查找图书的关键字是否匹配。 3. 如果匹配,则说明找到了目标图书,返回该节点的指针。 4. 如果不匹配,则继续遍历下一个节点,直到遍历完整个链表。 5. 如果遍历完整个链表仍未找到目标图书,则说明该图书不存在于图书信息中,返回空指针。 需要注意的是,在链式存储结构中,节点的顺序是随机的,因此查找效率可能会受到影响。为了提高查找效率,可以考虑使用哈希等其他数据结构。 ### 回答2: 基于链式存储结构图书信息最佳位置图书查找,在实际的图书信息管理中具有重要的意义。为了快速高效地找到需要检索的图书,必须在构建图书信息时考虑如何优化其查询过程。以下是一些可能的优化策略: 1.分类存储。可以根据不同的分类将图书分为不同的链表存储,例如:自然科学类图书存储在一条链表中、社会科学类图书存储在另一条链表中等等。这样可以使检索图书时只需搜索相应链表,有效地减少搜索时间。同时,分类存储也有利于管理图书信息,便于快速准确地添加或删除图书信息。 2.索引结构。对于图书数量较大的图书馆,可以建立索引结构,用于快速定位需要查找图书信息。通常索引会根据图书名称、作者、出版社等信息分别建立,每个索引指向相应链表或节点,加快检索速度。 3.哈希。哈希是一种高效的数据结构,可以大幅度提高查找效率,由于哈希不需要比较大小来查找相应的元素,所以其平均查找时间很少受到数据规模的影响。通过将图书信息中某些固定的属性值作为哈希函数的输入,可以得到该图书所在的链表位置,然后再按照链式存储的方式查找相应的节点即可。 4.二叉搜索树。二叉搜索树时一种经典的搜索数据结构,可以用来加速图书信息查找。通过根据图书名称或者图书编号等属性值构建一棵二叉搜索树,可以快速定位需要查找图书信息。 综上所述,基于链式存储结构图书信息最佳位置图书查找可以通过分类存储、索引结构、哈希或二叉搜索树等优化策略进行加速,以减少检索时间和提高图书信息的管理效率。 ### 回答3: 基于链式存储结构图书信息最佳位置图书查找,可以通过以下几个步骤来实现。 首先,可以将图书信息按照一定的规则如书名、作者、ISBN等等进行排序。由于链式存储结构图书信息中每个节点存储的信息是互不影响的,这意味着在排序后每一组数据都是独立的。 其次,一旦完成了图书信息的排序后,可以使用二分查找法进行搜索。二分查找法是一种高效的搜索方法,它的基本思想是将待搜索的区间不断地缩小一半,直到找到待搜索的值或者区间为空。 如果我们采用书名作为图书信息的排序依据,那么在进行二分查找的时候,需要进行字符串的比较,所以,我们需要对比较字符串的效率进行优化。 具体实现时,可以采用字符串哈希来进行字符串的比较,将字符串转化为数字,再进行数字的比较。在哈希时可以选用字符串长度作为模数,这样可以提高哈希效率。对于哈希后哈希值相同的字符串,可以在链式节点中维护一个链表按照插入顺序保存,从而解决哈希冲突的问。 最后,我们需要注意要处理无结果的情况。在进行二分查找时,如果找到了待搜索的值,则直接返回结果。否则,如果不断地缩小搜索区间,最终会将区间缩小到空,此时需要返回未找到的结果。 总之,基于链式存储结构图书信息最佳位置图书查找需要先进行排序,再使用二分查找法来查找,最终得到结果。同时,为了提高查找效率,可以使用字符串哈希等技术进行优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值