对于很长的线性数据结构,进行搜索,可以用哈希表的方式。

#include<iostream>#include<stdio.h>usingnamespacestd;//数据类型//注意:每一个数据节点,须绑定一个唯一的Key值//这一点可以简单理解为:如果是工人信息,可以使用工号;学生信息,可以用学号//设备信息,可以用设备编号structinfo{intid;charname[10];};infodata[10]={0};//存储数据//存入数据voidSetData(intkey,constinfo&value){intindex=key%10;//简单的散列算法,此处没有避免重复值data[index]=value;}//查找数据infofind(intkey){intindex=key%10;returndata[index];}intmain(intargc,char*argv[]){infoa={1001,"张三"};SetData(a.id,a);infob={1002,"李四"};SetData(b.id,b);infoc=find(1002);cout<<c.id<<":"<<c.name<<endl;//一般的数组查询方法//for(inti=0;i<10;i++)//{//if(data[i].id==1002)//{//cout<<c.id<<":"<<c.name<<endl;//}//}getchar();return0;}

哈希表的优势在于查找时,一次命中目录。而传统的数组或链表查找,需要从头到尾遍历一次。