package com.db.one;
import java.util.Random;
public class SkipList<T extends Comparable<? super T>> {
private int level;
private int length;
private SkipNode<T> header;
private static int MAX_LEVEL = 10;
Random ram = new Random();
public SkipList(){
this(MAX_LEVEL);
}
@SuppressWarnings("unchecked")
public SkipList(int maxLevel){
level = maxLevel;
header = new SkipNode(0,level);
for (int i = 0; i< this.header.getLevel(); i++) {
this.header.setForward(i, null);
}
}
public int getRandom(int min, int max)
{
return ram.nextInt(max) % (max - min + 1) + min;
}
@SuppressWarnings("unchecked")
public void insert(T key){
int nodeLevel = this.getRandom(1, level);
SkipNode<T> newNode = new SkipNode<T>(key,nodeLevel);
SkipNode<T>[] temp = new SkipNode[level];
SkipNode<T> ptr = header;
for(int i = level - 1;i>=0;--i){
//倒序遍历
while(ptr.getForward(i)!=null&&ptr.getForward(i).getKey().compareTo(key) < 0){
//直到最后一个比要插入值大的节点
ptr = ptr.getForward(i);
}
temp[i] = ptr;
}
//将新节点插入对应位置 并设置好跳跃表
for(int i=0;i<nodeLevel;++i){
newNode.setForward(i, temp[i].getForward(i));
temp[i].setForward(i, newNode);
}
System.out.println(key);
}
public T search(T key){
SkipNode<T> ptr = header;
int tempLevel = level-1;
while(tempLevel >= 0 && ptr.getForward(tempLevel) != null){
if(key.equals(ptr.getForward(tempLevel).getKey())){
return ptr.getForward(tempLevel).getKey();
}
else if(key.compareTo(ptr.getForward(tempLevel).getKey()) < 0){
//进入下一层
--tempLevel;
}else{
ptr = ptr.getForward(tempLevel);
}
}
return null;
}
}
cf353377036
- 粉丝: 1
- 资源: 17
最新资源
- STM32电机库5.4开源注释 KEIL工程文件 辅助理解S STM32电机库5.4开源注释 KEIL工程文件 辅助理解ST库 寄存器设置AD TIM1 龙贝格+PLL 前馈控制 弱磁控制 foc的基
- 信度分析案例数据+说明文档.zip
- No.247 S7-200 MCGS 基于PLC自动门控制系统设计 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面
- 西门子S7-1200PLC石灰反应釜程序,西门子触摸屏画面,程序采用FB块设计,自定义块中模拟量处理,数值转,电机控制,时间设置均采用SCL语言编写,子程序功能很全,包括与变频器通讯,程序同时设有与和
- 西门子CP343-1当作IO控制器S7-300通过Profinet连接控制danfoss丹佛丝变频器博图项目
- 妙健康(健康行为管理服务提供商,北京妙医佳健康科技集团有限公司)创投信息
- 西门子PLC程序MCGS组态6层电梯六层电梯运动控制系统 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面
- 妙手医生(就医用药支付综合性服务平台,北京圆心科技集团股份有限公司)创投信息
- 皮阿诺(家居定制品牌,广东皮阿诺科学艺术家居股份有限公司)创投信息
- MATLAB代码:微电网两阶段鲁棒优化经济调度程序 关键词:微网优化调度 两阶段鲁棒 CCG算法 经济调度 参考文档:《微电网两阶段鲁棒优化经济调度方法》 仿真平台:MATLAB YALMIP+CPL
- 学习笔记-输出比较 和 PWM-江科大
- 基于单片机智能插座APP控制 1,实时采集电压电流,功率,频率,电能,虹功率因数 2,分为两种模式,定时模式,手动模式 3,设置定时模式,自动打开开关给你设备供电,到达时间后自动关闭 4,过压过载过温
- CMIP6多模式气温模拟评估数据集.zip
- 普普文化(嘻哈文化内容营销服务商,厦门普普文化股份有限公司)创投信息
- 可编辑地图PPT模板(精确到区县).pptx
- 西门子CP343-1当作IO控制器S7-300通过Profinet连接控制danfoss丹佛丝变频器博图项目 6GK7 343-1EX30-0XE0
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈