haueoj1215: 基于链式存储结构的图书信息表的最爱图书的查找

题目描述

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

输入

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



 

输出

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

样例输入 Copy

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

样例输出 Copy

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

代码:
 

#include<iostream>
#include<string>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
//构建链表 
typedef struct 
{
    string number;
    string name;
    double price;
}book;
typedef struct LNode
{
    book data;
    LNode *next;
}LNode,*LinkList;
void wcf(LinkList &L)
{
    L=new LNode;
    L->next=NULL;
    LinkList p=L;
    int n;
    cin>>n;
    while(n--)
    {
        LinkList q=new LNode;
        cin>>q->data.number>>q->data.name>>q->data.price;
        q->next=NULL;
        p->next=q;
        p=q;
    }
 } 
 int main()
 {
     LinkList L;
     wcf(L);
     int n,t=0;
     cin>>n;
     while(n--)
     {
         string name1;
         cin>>name1;
         LinkList p=L->next;
         while(p)
         {
             if(name1==p->data.name)
                 t++;
             p=p->next;
        }
        if(t==0)
            cout<<"Sorry,there is no your favourite!"<<endl;
        else
        {
            cout<<t<<endl;
            p=L->next;
            while(p)
            {
                if(name1==p->data.name)
                {
                    cout<<p->data.number<<" "<<p->data.name<<" ";
                    printf("%.2lf\n",p->data.price);
                }
                p=p->next;
            }
        }
    }
    return 0;
 }

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于链式存储结构图书信息的最图书查找可以通过以下步骤实现: 1. 遍历链表,找到每本书的最标记(可以是一个布尔值或者一个数字)。 2. 如果最标记为真,则将该书的信息输出或者记录下来。 3. 如果链表遍历完毕仍未找到最图书,则输出提示信息。 需要注意的是,在遍历链表时,可以使用循环或者递归的方式进行,具体实现方式可以根据具体情况进行选择。另外,如果链表中存在多本最图书,则需要将它们全部找出来。 ### 回答2: 基于链式存储结构图书信息,最图书查找可以通过遍历链表来实现。 首先,需要定义一个链表节点,用于存储图书信息。节点包含两个元素,一个是图书信息,另一个是指向下一个节点的指针。 其次,可以建立一个链表头,用于指向第一个节点。在链表中插入图书信息时,可以根据书名或ISBN号等信息建立索引,并按照一定的规则将节点插入链表中。 然后,查找图书时,需要遍历链表,找到符合条件的图书信息节点。可以通过遍历整个链表,或者使用二分查找法等算法加快查找速度。 最后,将找到的最图书信息进行展示或其他操作。 需要注意的是,链式存储结构图书信息相对于其他存储结构的优点在于可以动态地进行插入、删除等操作,而不需要考虑数组大小的限制。但同时也存在着内存空间的浪费、遍历效率低等缺点。因此,在实际应用中,需要根据具体情况选择合适的存储结构。 ### 回答3: 在基于链式存储结构图书信息中,要查找图书,需要遍历整张。首先,需要对链表进行排序,可以选择冒泡排序、选择排序、插入排序或归并排序等算法,将图书按照最程度从高到低排序。 之后,我们可以采用线性查找(顺序查找)算法,在已排序的链表中从头到尾依次遍历每一个图书的最程度,找到最程度最高的图书即为所得。如果有多本图书的最程度相同,则可以返回这些图书中的任意一本。 另外,如果涉及到频繁的最图书查找,并且图书信息的大小较大,采用线性查找的效率不高,可以考虑利用哈希进行优化。将每本图书的最程度作为哈希函数的关键字,将图书信息存储在哈希中,以此提高最图书查找效率。 总之,基于链式存储结构图书信息的最图书查找可以采用排序+线性查找或哈希两种算法,具体选择取决于数据规模和业务需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值