您好,匿名用户

lisp如何实现字典数据结构

0 投票

古老lisp的语言一直被称为现代各种语言的始祖
看名字就知道是表处理语言, 处理动态的表当然是看家本领

当然现代的流行语言包括python, ruby, js 甚至 perl 和 php 都实现了两个基本上无敌的数据结构, list和dict
而据我所以lisp的最近流行方言clojure内置了丰富的数据结构, 对clojure当然不是问题

而古老的lisp语言, 一般是怎么处理dict这种数据结构的需求的呢?
或者从另外一个角度提问, 如何使用list这种简单的数据结构快速的构建出丰富的数据类型, 比如set, dict或者graph等等?

用户头像 提问 2013年 10月25日 @ Maokai 中士 (1,427 威望)
分享到:

1个回答

0 投票

一般用 association list 或 property list 来模拟 dict 或 hash table。

association list:

 ((key1 . value1)
  (key2 . value2)
  (key3 . value3))

property list:

 (key1 value1
  key2 value2
  key3 value3)

对于 set 的话,要在插入函数上做文章,插入前遍历表来查看该对象是非已在表中。

图可以转化成树,树可以表达为 (root child1 child2 ...),child1、child2 等再按照前面的形式递归定义下去。

建议楼主看 Structure and Interpretation of Compu...,里面有写到用表实现 tree, set, queue 等数据结构。

用户头像 回复 2013年 10月25日 @ Malphite 中士 (1,401 威望)
提一个问题:

相关问题

0 投票
1 回复 456 阅读
用户头像 提问 2013年 11月28日 @ Diana 中士 (1,236 威望)
0 投票
1 回复 177 阅读
0 投票
0 回复 24 阅读
0 投票
1 回复 40 阅读
用户头像 提问 2016年 6月8日 @ Zeus 下士 (833 威望)
0 投票
1 回复 49 阅读
用户头像 提问 2016年 1月27日 @ Heimerdinger 中士 (1,296 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

IT技术交流群 - 随意问
欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...