zoukankan      html  css  js  c++  java
  • Hash链表

    <?php
    
    /*
      +------------------------------------------------------------------------------
      | datetime 2013-10-29  12:46:44
      +------------------------------------------------------------------------------
      | author baijm
      +------------------------------------------------------------------------------
     */
    
    /**
     * hash节点的数据结构,用类模拟一个数据链表
     */
    class HashNode {
    
        public $key;
        public $value;
        public $nextNode;
    
        public function __construct($key, $value, $nextNode = NULL) {
            $this->key = $key;
            $this->value = $value;
            $this->nextNode = $nextNode;
        }
    
    }
    
    class HashTable {
    
        private $buckets;    //用于存储数据的数组
        private $size = 10;  //数组的大小
    
        public function __construct() {
            //$this->buckets=new SplFixedArray($this->size);
            $this->buckets = array();
        }
    
        /**
         * 计算key的hash值,使用最简单的hash算法
         * @param type $key
         * @return type
         */
        private function hashFunc($key) {
            for ($i = 0, $len = strlen($key); $i < $len; $i++) {
                $hashVal+=ord($key{$i});
            }
            return $hashVal % $this->size;
        }
    
        public function insert($key, $value) {
            $index = $this->hashFunc($key);
            if (isset($this->buckets[$index])) {
                $nextNode = new HashNode($key, $value, $this->buckets[$index]);
            } else {
                $nextNode = new HashNode($key, $value);
            }
            $this->buckets[$index] = $nextNode;
        }
    
        public function find($key) {
            $index = $this->hashFunc($key);
            $current = $this->buckets[$index];
            while(isset($current)){
                if($current->key==$key){
                    break;
                }else{
                    $current=$current->nextNode;
                }
            }
            print_r($this->buckets);
            return $current->value;
        }
    
    }
    
    $hash = new HashTable();
    $hash->insert('key1', 'value1');
    $hash->insert('key12', 'value12');
    $hash->find('key1');
    $hash->find('key12');
    ?>
  • 相关阅读:
    密码数学大作业
    《数据结构》教材测评
    机器学习概述
    SQL基础-流程控制结构
    SQL基础-变量 存储过程和函数
    SQL基础-视图
    SQL基础-TCL 事务控制语言
    SQL基础-DDL 数据定义语言
    SQL基础-DML 数据操作语言
    SQL基础 -DQL 数据查询语言(下)
  • 原文地址:https://www.cnblogs.com/bai-jimmy/p/3394123.html
Copyright © 2011-2022 走看看