博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
哈希表(链地址法插入删除)
阅读量:5268 次
发布时间:2019-06-14

本文共 2569 字,大约阅读时间需要 8 分钟。

与开放地址法思想不同,它不用再次寻找数组位置,采用链表方式存储重复的位置

//链表结点public class Link {    private int iData;//节点数据    public Link next;//当前节点的连接节点    public Link(int it) {        iData=it;    }    public int getKey() {        return iData;    }    public void displayLink() {         System.out.print(iData+" ");    }}
//有序链表public class SortedList {    private Link first;    public SortedList() {        first=null;    }    //插入    public void insert(Link theLink) {        int key=theLink.getKey();//当前节点的数值        Link previous=null;//存储前一个节点        Link current=first;//存储当前节点        while(current!=null && key>current.getKey()) {
//数据是从左到右依次降低 //向后找位置 previous=current;//previous存储当前非目的节点 current=current.next;//current存储当前非目的节点的下一个节点 } if(previous==null) {
//说明插入的位置是第一个 first=theLink; }else previous.next=theLink;//如果不是第一个,就是这样插入链表的 theLink.next=current;//上面与这一步一起完成插入操作 } //删除 public void delete(int key) { Link previous=null; Link current=first; while(current!=null && key!=current.getKey()) { previous=current; current=current.next; } if(previous==null) first=first.next; else previous.next=current.next; } //查找 public Link find(int key) { Link current=first; while(current!=null && current.getKey()<=key) { if(current.getKey()==key) { return current;//找到了 } current=current.next; } return null; } //显示链表 public void displayList() { System.out.print("显示:"); Link current=first; while(current!=null) { current.displayLink(); current=current.next; } System.out.println(); }}
//哈希表public class HashTable {    private SortedList[] hashArray;//数组    private int arraySize;//哈希表的大小    public HashTable(int size) {
//初始化 arraySize=size; hashArray=new SortedList[arraySize]; //给每一个链表初始化 for(int j=0;j
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Test {    public static void main(String [] agrs) throws IOException {        Link aDataItem;        int akey,size,n,keysPerCell=100;        System.out.print("Enter:");        size=getInt();        System.out.println("初始化:");        n=getInt();        keysPerCell=10;        HashTable theHashTable=new HashTable(size);for(int j=0;j

 

转载于:https://www.cnblogs.com/S-Mustard/p/7724060.html

你可能感兴趣的文章
octave基本操作
查看>>
axure学习点
查看>>
WPF文本框只允许输入数字[转]
查看>>
dom4j 通用解析器,解析成List<Map<String,Object>>
查看>>
第一个项目--用bootstrap实现美工设计的首页
查看>>
使用XML传递数据
查看>>
TYVJ.1864.[Poetize I]守卫者的挑战(概率DP)
查看>>
0925 韩顺平java视频
查看>>
iOS-程序启动原理和UIApplication
查看>>
SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器...
查看>>
git的安装
查看>>
mysql 8.0 zip包安装
查看>>
Spring框架系列(三)--Bean的作用域和生命周期
查看>>
springboot + mybatis
查看>>
awk 统计
查看>>
CSS min-height 属性
查看>>
模板设计模式的应用
查看>>
实训第五天
查看>>
平台维护流程
查看>>
2012暑期川西旅游之总结
查看>>