图书管理
Posted fangbozhen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图书管理相关的知识,希望对你有一定的参考价值。
题目描述
设计一个系统支持两个操作:
①加入一个字符串s;
②查找是否存在一个字符串。
思路
我们这里的要求是维护一个可快速查找、插入字符串的数据结构。我们这里可以用Hash表,也就是散列表来储存。我们用使用双Hash,生成两个值,其中一个作为散列表的标号,还有记录值。那么这样会形成一个由数组延伸出来的列表,本质上与前向星相似,因此我们也可以用类似前向星遍历的方法进行寻找。
代码
#include <bits/stdc++.h> using namespace std; const int mod1=1e6+3,mod2=1e6+9,p1=47,p2=79; const int MAXN=30005; char s[10],name[220]; int tot,nxt[MAXN],poi[mod1+5],key[MAXN]; void insert(int x,int y) nxt[++tot]=poi[x]; poi[x]=tot; key[tot]=y; bool query(int x,int y) for(int i=poi[x];i;i=nxt[i]) if(key[i]==y)return 1; return 0; int main() int t; scanf("%d",&t); while(t--) scanf(" %s",s); gets(name); int len=strlen(name); int sum1=0,sum2=0; for(int i=0;i<len;i++) sum1=(sum1*p1+name[i])%mod1; sum2=(sum2*p2+name[i])%mod2; if(s[0]==‘a‘)insert(sum1,sum2); else if(query(sum1,sum2))printf("yes\n"); else printf("no\n"); return 0;
以上是关于图书管理的主要内容,如果未能解决你的问题,请参考以下文章