尚硅谷Java数据结构--哈希表(链表)
以下是Java代码实现
package DataStructure;
/**
* Created with IntelliJ IDEA.
* Description:
* User: 86178
* Date: 2024-03-01
* Time: 8:56
*/
public class HashTable {
public static void main(String[] args) {
HashTab h=new HashTab(7);
Emp e1=new Emp(6,"lisa");
Emp e2=new Emp(2,"tom");
Emp e3=new Emp(12,"nina");
Emp e4=new Emp(13,"lily");
Emp e5=new Emp(8,"mike");
Emp e6=new Emp(5,"jack");
h.add(e1);
h.add(e2);
h.add(e3);
h.add(e4);
h.add(e5);
h.hashlist();
h.find(12);
}
}
class Emp{
//员工信息
public int id;
public String name;
public Emp next;//next默认为空
public Emp(int id,String name){
this.id=id;
this.name=name;
}
@Override
public String toString() {
return "[id="+id+" name="+name+"]";
}
}
class EmpList{
//员工链表
private Emp head;//头指针 指向有效的Emp节点 默认为空
public Emp getHead(){
return head;
}
//todo 在链表中增加Emp节点
public void add(Emp e){
if(head==null){
head=e;
return ;
}
else{
Emp cur=head;
while(cur.next!=null){
cur=cur.next;
}
cur.next=e;
}
}
//遍历链表的信息
public void list(int no){
Emp cur=head;
if(cur==null){
System.out.println("第"+(no+1)+"条链表为空");
return;
}
System.out.println("第"+(no+1)+"条链表信息如下");
while(cur!=null){
System.out.println(cur);
cur=cur.next;
}
}
public void FindEmp(int no){
//查找某个员工是否存在
if(head==null){
System.out.println("链表为空,无法查找");
return ;
}
Emp cur=head;
while(cur!=null){
if(cur.id==no){
System.out.println("找到了,该员工的信息:"+cur);
return;
}
cur=cur.next;
}
if(cur==null){
System.out.println("抱歉,查无此人");
return;
}
}
}
class HashTab{
//hash 同时管理多条链表
//todo 散列函数
private EmpList[] EmpArr;
private int eSize;
public HashTab(int size){
EmpArr=new EmpList[size];
this.eSize=size;
//todo 坑 (分别初始化每一条链表)
for(int i=0;i<eSize;i++){
EmpArr[i]=new EmpList();
}
}
//todo 添加emp
public void add(Emp e){
//根据员工的id 判断员工应该添加到哪一个链表
int EmpListNo=function(e.id);
//将e加入到对应链表中
EmpArr[EmpListNo].add(e);
}
public void hashlist(){
//遍历hash表
for(int i=0;i<eSize;i++){
EmpArr[i].list(i);
System.out.println("----------------------------------------");
}
}
public void find(int no){
int EmpListNo=function(no);
EmpArr[EmpListNo].FindEmp(no);
}
//todo 编写一个散列函数 取模法
public int function(int id){
return id % eSize;
}
}
原文地址:https://blog.csdn.net/m0_70094411/article/details/136389317
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!