PHP实现 拉链式哈希表
来源:互联网 发布:淘宝店铺单品分析软件 编辑:程序博客网 时间:2024/05/17 06:17
<?php/** * 使用PHP语言实现数据的 拉链式哈希 存储 * @author beggar 770793038@qq.com * @date 2015-05-08 */class hashTable{ private $size; private $bucket; private $count = 0; public function __construct($size) { $this->size = $size; $this->bucket = new SplFixedArray($this->size); } /** * 取每个字符的asc码之和并对其取余,实现简单的散列函数 * @param type $key * @return boolean */ private function hashKey($key){ if(empty($key)){ return false; } $hash = 0; $len = strlen($key); for($i=0; $i<$len; $i++){ $hash += ord($key[$i]); } return $hash%$this->size; } /** * 向哈希表中插入指定数据 * @param type $key * @param type $val * @return boolean */ public function insert($key, $val=''){ if(empty($key) || empty($val)){ return false; } $index = $this->hashKey($key); if($this->bucket[$index]->key == $key || $this->count >= $this->size){ return false; } if(isset($this->bucket[$index])){ $hashnode = new hashNode($key, $val, $this->bucket[$index]); }else{ $hashnode = new hashNode($key, $val, NULL); } $this->bucket[$index] = $hashnode; $this->count++; } /** * 查找数据 * @param type $key * @return boolean */ public function find($key){ if(empty($key)){ return false; } $index = $this->hashKey($key); $pHead = $this->bucket[$index]; while($pHead->key != $key){ $pHead = $pHead->next; } return $pHead->value; }}/** * 使用类充当哈希表的每个节点,相当于C语言下的结构体实现的节点 */class hashNode{ public $key; public $value; public $next; public function __construct($key, $val, $node=null) { $this->key = $key; $this->value = $val; $this->next = $node; }}
0 0
- PHP实现 拉链式哈希表
- php实现链式队列
- PHP实现链式操作
- 【PHP】链式操作的实现
- 链式哈希表的实现
- PHP实现线性表的链式存储
- php链式操作的实现原理
- PHP 三种方式实现链式操作
- php实现数据结构线性表(链式)
- php 实现欧拉函数Euler
- 如何在PHP中实现链式方法调用
- 如何在PHP中实现链式方法调用
- php 实现简单链式二叉树 创建 和遍历
- PHP实现的连贯操作、链式操作实例
- PHP实现的连贯操作、链式操作实例
- 用php实现一个简单的链式操作
- C++实现哈希表 HashMap冲突链式解决
- PipeStyle PHP链式风格
- 使用VS搭建三层结构
- C#流的初解
- leetcode--Merge k Sorted Lists
- 条款02:尽量以const,enum,inline替换#define
- Android初学------系统设置之时间日期设置(一)
- PHP实现 拉链式哈希表
- 做高通平台安卓驱动感言
- 《汇编语言(第三版)》中实验九(之后需要显示缓冲区显示的习题)不能显示的解决方法
- SSL 与 数字证书 的基本概念和工作原理
- 欢迎使用CSDN-markdown编辑器
- Android简化广播发送所做的一些尝试
- 仿照新浪微博
- JavaScript高级程序设计零碎知识点
- cocos2d-x 3.5版 关于Console模块