php映射,数据结构-PHP 映射(Map)实现

这篇文章主要介绍如何实现 映射(Map),映射是一个存储(键,值)数据对的数据结构(key-value),它的特点是根据键(key)去寻找值(value),下面主要介绍如何使用 链表 去实现 映射(Map)和使用 二分搜索树(Binary Search Tree) 去实现 映射(Map)。

1.基于链表的映射(Map)实现

1.1 节点定义/**

* 映射节点定义

* Class Node

*/

class Node

{

public $key;

public $value;

public $next;

public function __construct($key, $value, $next) {

$this->key = $key;

$this->value = $value;

$this->next = $next;

}

}

1.2 LinkedListMap 类

这是一个基于链表实现的映射(Map)类,里面有 add($key,$value)方法向链表添加 key-value 键值对,contains($key)方法判断映射(Map)中是否包含 $key 对应的 key-value 键值对,set($key, $value)方法可以更新 key-value 键值对中的 value值,remove($key)方法可以删除 key 等于 $key 对应的 key-value 键值对。<?php

require 'Map.php';

/**

* 基于链表的映射(Map)实现

* Class LinkedListMap

*/

class LinkedListMap implements Map

{

public $dummyHead;

public $size;

public function __construct() {

$this->dummyHead = new Node(null, null, null);

$this->size = 0;

}

/**

* 向链表添加数据

* @param $key

* @param $value

*/

public function add($key, $value): void {

$node = $this->getNode($key);

if ($node == null) {

$this->dummyHead->next = new Node($key, $value, $this->dummyHead->next);

$this->size++;

} else {

$node->value = $value;

}

}

/**

* 判断 Map 是否包含 key

* @param $key

* @return bool

*/

public function contains($key): bool {

$node = $this->getNode($key);

if ($node == null) {

return false;

}

return true;

}

public function get($key) {

$node = $this->getNode($key);

return $node ?? null;

}

public function set($key, $value) {

$node = $this->getNode($key);

if (

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值