首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序员是如何在面向对象范式之前实现链表思想的?

程序员是如何在面向对象范式之前实现链表思想的?
EN

Software Engineering用户
提问于 2014-04-26 23:40:26
回答 6查看 4.4K关注 0票数 6

据我所见,链接列表主要是使用面向对象的思想实现的。(有一个保存某些信息和下一个链接地址的对象)。在面向对象的范例出现之前,链接列表是如何实现的?他们只是发明了(?)一旦OOP被开发出来?

EN

回答 6

Software Engineering用户

回答已采纳

发布于 2014-04-27 00:02:55

链接列表与OOP无关,实际上它们比OOP早很多。链表是通过具有递归结构来实现的,在我看来,在组装中,这在概念上是最容易理解的--您分配一些内存,而该内存的第一个字节作为指向下一个/前一个的指针。在程序集中,您不必担心“类型”,只需将其视为另一个指针,因此,它是递归的这一事实并不是您需要考虑的问题--您不必考虑在其定义中如何引用某物。

票数 35
EN

Software Engineering用户

发布于 2014-04-26 23:53:43

例如,在C中,他们使用struct来模拟节点,并使用指针来链接节点。

票数 7
EN

Software Engineering用户

发布于 2014-04-28 07:19:01

据我所见,链接列表主要是使用面向对象的思想实现的。(有一个保存某些信息和下一个链接地址的对象)。

你看过什么不是面向对象的?如果您只看到了OO,那么您看到的唯一的简单数据结构的实现就是OO,这一点也就不足为奇了。

他们只是发明了(?)一旦OOP被开发出来?

链接列表比OO编程早几十年。

在面向对象的范例出现之前,链接列表是如何实现的?

1950年,S在IBM 704上实现了Lisp编程语言。Lisp的基本数据结构是cons单元,它是一个由两个值组成的组。IBM 704的机器字大小为36位,还有一些特殊的指令,CAR和CDR,它们将从36位字中提取15位值。存储在CAR位中的值是列表的头,而存储在CDR中的值是尾,因此在这种情况下,cons单元格可以用作链接列表中的节点。

有关如何在1950年代的IBM704上实现链接列表的更详细的讨论,请参见http://en.wikipedia.org/wiki/CAR_和_CDR

票数 7
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/237126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档