看山是山 看水是水 看山非山 看水非水|

Appletree24

园龄:2年10个月粉丝:25关注:0

2022-07-16 14:02阅读: 47评论: 0推荐: 0

哈希表实现——链表形式——人员管理系统

哈希表实现——链表形式——人员管理系统

一.简介

Java写的,一边学一边敲,比较简陋,当做个纪念。

二.代码

package com.appletree24.hashtable;
import javax.swing.plaf.synth.SynthOptionPaneUI;
import java.util.Scanner;
public class HashTableDemo {
public static void main(String[] args) {
HashTable hashTable=new HashTable(7);
String key="";
Scanner scanner=new Scanner(System.in);
while (true){
System.out.println("add:添加雇员");
System.out.println("list:显示雇员");
System.out.println("find:查找雇员");
System.out.println("del:删除雇员");
System.out.println("exit:退出系统");
key=scanner.next();
switch (key){
case "add":
System.out.println("输入id");
int id=scanner.nextInt();
System.out.println("输入名字");
String name=scanner.next();
Emp emp=new Emp(id,name);
hashTable.add(emp);
break;
case "del":
System.out.println("输入id");
id=scanner.nextInt();
hashTable.deleteEmp(id);
break;
case "list":
hashTable.list();
break;
case "exit":
scanner.close();
break;
case "find":
System.out.println("请输入要查找的雇员ID");
id=scanner.nextInt();
hashTable.findEmpById(id);
break;
default:
break;
}
}
}
}
class HashTable{
private EmpLinkedList[] empLinkedListArray;
private int size;
public HashTable(int size){
this.size=size;
empLinkedListArray=new EmpLinkedList[size];
for (int i=0;i<size;i++){
empLinkedListArray[i]=new EmpLinkedList();
}
}
public void add(Emp emp){
int empLinkedListNO=hashFun(emp.id);
empLinkedListArray[empLinkedListNO].add(emp);
}
public void list(){
for(int i=0;i<size;i++){
empLinkedListArray[i].list(i);
}
}
public int hashFun(int id){
return id%size;
}
public boolean findEmpById(int id){
int empLinkedListNO=hashFun(id);
Emp emp=empLinkedListArray[empLinkedListNO].findEmpById(id);
if(emp!=null){
System.out.println("找到在"+(empLinkedListNO+1)+"链表中"+","+"雇员ID为:"+id);
return true;
}else{
System.out.println("哈希表中不存在此雇员");
return false;
}
}
public void deleteEmp(int id){
int empLinkedListNO = hashFun(id);
Emp emp = empLinkedListArray[empLinkedListNO].findEmpById_DeVer(id);
if (emp.next == null) {
empLinkedListArray[empLinkedListNO].head=null;
} else {
if (emp == null) {
System.out.println("查无此人");
} else {
if (emp.next.next != null) {
System.out.println("删除成功");
emp.next = emp.next.next;
} else {
System.out.println("删除成功");
emp.next = null;
}
}
}
}
}
class Emp{
public int id;
public String name;
public Emp next;
public Emp(int id, String name) {
super();
this.id = id;
this.name = name;
}
}
class EmpLinkedList{
public Emp head;
//添加第一个成员
public void add(Emp emp){
if(head==null){
head=emp;
return;
}
//如果不是第一个雇员,使用辅助指针,定位到最后
Emp curEmp=head;
while (true){
if(curEmp.next==null){
break;
}else{
curEmp=curEmp.next;
}
}
curEmp.next=emp;
}
public void list(int no){
if(head==null){
System.out.println("链表"+(no+1)+"为空");
return;
}
System.out.print((no+1)+"链表的信息为:");
Emp curEmp=head;
while (true){
System.out.printf("=>id=%d name=%s",curEmp.id,curEmp.name);
if(curEmp.next==null){ //最后一个节点
break;
}
curEmp=curEmp.next;
}
System.out.println();
}
public Emp findEmpById(int id){
if(head==null){
System.out.println("链表为空");
return null;
}
Emp curEmp=head;
while (true){
if(curEmp.id==id){
break;
}
if(curEmp.next==null){
curEmp=null;
break;
}
curEmp=curEmp.next;
}
return curEmp;
}
//传入要删除结点的上一个节点
public boolean deleteEmp(Emp emp){
if(head==null){
System.out.println("链表为空,无需删除");
return false;
}else if(emp==null){
System.out.println("参数错误");
return false;
}
emp.next=emp.next.next;
return true;
}
public Emp findEmpById_DeVer(int id){
if(head==null){
System.out.println("链表为空");
return null;
}
if(head.id==id){
return head;
}
Emp curEmp=head;
while(curEmp.next!=null){
if(curEmp.next.id==id){
return curEmp;
}
curEmp=curEmp.next;
}
return null;
}
}

本文作者:Appletree24

本文链接:https://www.cnblogs.com/appletree24/p/16484123.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Appletree24  阅读(47)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 愛錠 (Edit ver.) LiSA
愛錠 (Edit ver.) - LiSA
00:00 / 00:00
An audio error has occurred.

話してしまえば 思い出

隠してしまえば 幸せ

時間がすべてを奪ってく

What do you think?do you think?

愛してしまえば 地獄で

離れてしまえば 孤独だ

もう戻れない

ああ、想う 想うほど 絡まる愛錠

この手を繋ぐ鎖のように

ただ目の前の明日を信じられるのならば

それだけでいい

今そっと手を伸ばした

もたれてしまえば 2倍で

壊してしまえば それぞれ

時間このまま過ぎ去って

What do you think?do you think?

願ってしまえば 欲しくて

叶ってしまえば 足りない

知っている

もう戻れはしない

あの日には

今夜すべてを置き去りに

独りで逃げ出したって

きっと私はいつまでも

後悔に縛られたまま

ずっときょうを恨みながら

罪責と悪夢に魘されるのでしょう

解けないわ

鉄と鉄が擦れ合い

指と指の温もりも

今ここに貴方を感じられるカギ

ああ、想う 想うほど 絡まる愛錠

この手を繋ぐ鎖のように

ただ目の前の明日を信じられるのならば

それだけでいいよ 今は

ああ、巡る 巡るほど 絡まる愛錠

切れない絆 確かめながら

どんな見えない明日も貴方が傍にいるのなら

それだけでいい

強く確かな愛情