不可变和持久集合

dev-master 2016-05-11 08:26 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:13:34 UTC


README

Build Status

不可变持久 集合,用于 PHP。

如果我们有不可变的数据结构,生活将变得简单得多。代码将更容易理解,易于测试,且无副作用。仅是不可变还不够,这些数据结构还必须高效。通过使它们持久,集合可以重复使用内部结构以最小化表示集合实例变体所需的操作数量。

安装

要安装此库,请运行以下命令并获取最新版本

composer require keyvanakbary/medusa

用法

持久栈

$s = Medusa\Stack\PersistentStack::createEmpty();

$s1 = $s->push(1);
$s2 = $s1->pop();
echo $s1->peek();//1
echo $s2->peek();//Runtime exception

复杂度

持久队列

$q = Medusa\Queue\PersistentQueue::createEmpty();

$q1 = $q->enqueue(1);
$q2 = $q1->dequeue();
echo $q1->peek();//1
echo $q2->peek();//Runtime exception

复杂度

持久 AVL 树

$t = Medusa\Tree\PersistentAvlTree::createEmpty();

$t1 = $t->add(1, 'one');
$t2 = $t1->remove(1);
echo $t1->search(1)->value();//one
echo $t2->lookup(1);//Runtime exception

复杂度

持久红黑树

$t = Medusa\Tree\PersistentRedBlackTree::createEmpty();

$t1 = $t->add(1, 'one');
$t2 = $t1->remove(1);
echo $t1->search(1)->value();//one
echo $t2->lookup(1);//Runtime exception

复杂度