数据结构《20》----Immutable stack
Posted gavanwanggw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构《20》----Immutable stack相关的知识,希望对你有一定的参考价值。
有趣的函数式数据结构《一》----不可变栈
什么是不可变?往栈中插入一个元素,原来的栈保持不变,返回一个新的栈(已插入新的元素)。
push, pop,getMax 等操作都要求在 常数时间内完毕。
可能读者会产生疑惑,既然要返回一个新的栈,是不是就必须先拷贝一份原来的栈,然后在新的栈中插入元素。
可是这样复杂度就是线性的,怎样可以在常数时间内完毕呢??
这里。就是immutable DATA STRUCTRUE 的强大。。
本文给出一个C++ 的实现版本号,基本理想是利用内存共享,以及均摊时间的思想。
下图给出了实现的核心思想。
三个链表[1,2,3], [1,2,4], [1,2,5]共用节点1,2
这是由于一个节点能够有多个前驱节点指向它本身。。而栈的特性:只在链表的头部插入删除的性质保证了节点的共享。
以上是关于数据结构《20》----Immutable stack的主要内容,如果未能解决你的问题,请参考以下文章
Oracle数据库21c 不可变表(immutable table)实验
初探immutable Redux+immutable实现todolist