首页 > 其他 > 详细

数据结构《20》----Immutable stack

时间:2014-06-18 06:40:22      阅读:479      评论:0      收藏:0      [点我收藏+]

有趣的函数式数据结构《一》----不可变栈

什么是不可变?往栈中插入一个元素,原来的栈保持不变,返回一个新的栈(已插入新的元素)。

push, pop,getMax 等操作都要求在 常数时间内完成。


可能读者会产生疑惑,既然要返回一个新的栈,是不是就必须先拷贝一份原来的栈,然后在新的栈中插入元素。

但是这样复杂度就是线性的,如何能够在常数时间内完成呢??

这里,就是immutable DATA STRUCTRUE 的强大。。


本文给出一个C++ 的实现版本,基本理想是利用内存共享,以及均摊时间的思想。

下图给出了实现的核心思想。

三个链表[1,2,3], [1,2,4], [1,2,5]共用节点1,2

这是因为一个节点可以有多个前驱节点指向它本身。。而栈的特性:仅仅在链表的头部插入删除的性质保证了节点的共享。


bubuko.com,布布扣



数据结构《20》----Immutable stack,布布扣,bubuko.com

数据结构《20》----Immutable stack

原文:http://blog.csdn.net/shoulinjun/article/details/31760103

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!