Java、Python中没有指针,怎么实现链表、图等数据结构?
(2016-10-06 11:08:19)
分类:
C
其实Java, python完全可以看成在语言层用语法糖隐藏了指针。JAVA中到处充满指针,只不过把C++中的指针封装成了对象的引用了,引用就相当于C++中的指针
b,那A实例化(b在A实例化新开辟而不是通过外部赋值),内存开辟一段包含一个int a和 一个b
的reference地址,b实例化和A一样,然后把地址抛给A中b的reference。其实这个和C/C++中的A中有个B*
b差不多。所以链表、图等数据结构在C/C++中的实现转义到Java中也就是改改语法糖的表示。
Python中,链表、树等数据结构大致对应Python自带list、tuple、dict。Python这种动态语言用C实现,拿Python的list来讲,用一个struct
PyListObject 实现,看看源码指针随处都是。
C/C++这样的语言比较接近早期抽象计算机数据的思维方式,指针其实就是我们抽象数据并且这个数据是聚合但是实际内存离散的胶合层产物。后来出的语言通过其他的方式来抽象数据表示,将指针这个概念隐藏了,显得友好了,但是其实他还在那。
作者:成晨
链接:http://www.zhihu.com/question/22680562/answer/22288444
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。