## 哈尔滨工业大学《数据结构与算法分析》《软件开发实践》
## Scheme解法
# 把戏、杂技和先辈的括号——献给住在计算机内的神灵们
数学家们用奇怪的符号组成美妙的式子来表达具有深刻逻辑性的思想。
工程师们不但有从数学家那里继承来的严谨形式化体系,他们还有……呃,`NULL`和指针!
图灵机和λ-演算,前者在冯·诺依曼体系的补充下显得更加地“工程”,相较之下后者却更加地“数学”。作为两种模型体现,C语言和Scheme(Lisp)完全就像是两种极端:[一个是红外线,而另一个是紫外线] [1]。
那些说C语言的人,他们甚至能经常看到新鲜的二进制位。你总是会看见他们拿着大刀在这些比特上砍砍削削!可是他们的大刀又太锋利,稍有不慎坎坏了那些比特不说,还经常弄伤自己。
而那些满嘴Lisp方言的人,他们似乎住在一个耸立天际的高塔中。他们会建立各种各样的抽象层,将一些底层的思想给隔离开来。呵,这又是如此的巧妙!那些住在塔顶层的人们,似乎还没发觉这座塔是由他们之中那些能工巧匠“凭空”建造的!
在C语言或者是Java语言的程序员眼中,Scheme(Lisp)程序员不但是阴谋家,而且是一个叨念咒语、步履蹒跚的巫师。但更多的时候,这些巫师更像马戏团中的抛球小丑:他们总善于将大量的括号抛起在空中,又准确地稳稳接住。嘘!千万不要奇怪这些括号中会混入像`lambda`和`eval-apply`这样的诡秘东西——这也是他们善用的把戏!
换个角度来说,Scheme(Lisp)远比C语言要亲和数据结构:广义表(S-表达式)已经作为Scheme(Lisp)的语法基石深深地奠基在语言核心中,通过使用`cons`,我们可以将原子构建成表,甚至可以将原子和表组成新表!我们将看到……由于图灵等价的论断,凡是C语言能描述的数据结构,Scheme(Lisp)都能够模拟!
我们的雄心,并非需要`malloc()`才能开辟。保持一颗对数学虔诚探索的心,一种对工程谨严思辨的精神,我们将开始用远古的咒语来颂唱不太久远的诗篇。并谨以此献给那些住在计算机内的神灵们!
[1]: https://code.google.com/p/windows-config/wiki/TourDeBabel "Tour De Babel"
# 这是对你的启发,而非对你的限制
如果我的小学弟(或者是可爱的小学妹)很不幸地“搜索”到了这个Scheme解法,请不要懊恼,虽然它不能帮助你“快速地”完成令你烦恼的数据结构的作业,但它会给你洞开一扇通向奇异世界的大门。请插上想象的翅膀,摆脱C语言的束缚,在数据结构的世界里自由翱翔!
如果你因此对Scheme产生了兴趣,你可以参考[Scheme新手教程](http://deathking.github.io/yast-cn/),该教程也像本项目一样托管在Github上,它在[yast-cn](https://github.com/DeathKing/yast-cn)这个仓库中。
同时,计算机界里有一本非常优秀的教科书——[《计算机程序的构造和解释》](http://mitpress.mit.edu/sicp/),它也是用Scheme来授课的。你可以在[Learning-SICP](https://github.com/FoOTOo/Learning-SICP)这个仓库中取得公开课字幕的资源。
# 本仓库涵盖的内容
本仓库包括但不限于以下内容:
+ Scheme函数库的简易扩充(`library`文件夹)。
+ 一些数据结构、算法的Scheme实现的收集(`referrence`文件夹)。
+ 哈尔滨工业大学《数据结构与算法分析》课程的*作业*与*实验*代码(`exercise`、`experiment`文件夹)。
+ 哈尔滨工业大学《软件设计与开发实践I》课程的*实验*代码(`application`文件夹)。
本仓库中的代码采用MIT-Scheme解释器,遵循R^5RS规范。
# 参考文献
下面陈列的文献都是学习Scheme(Lisp)很好的资料。读者可以从这些文献的出版日期从感受到厚重的历史底蕴。
+ Allen J. Anatomy of LISP[M]. McGraw-Hill, Inc., 1978.
+ Siklossy L. Let's talk LISP[M]. Englewood Cliffs, NJ: Prentice-Hall, 1976.
+ Sussman G, Abelson H, Sussman J. Structure and interpretation of computer programs[J]. The Massachusetts Institute of Technology, 1985, 10.
+ Friedman D P. The Little Schemer[M]. The MIT Press, 1996.
# 联系我
如果您认为我的解法有错误或者过于笨拙,欢迎您提交Pull Request。
如果您想与我交流,欢迎致信`dk[at]hit.edu.cn`。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
数据结构是计算机存储、组织数据的方式,它涉及到数据的逻辑结构、物理结构以及对数据的基本操作。数据结构的选择会影响到程序的效率、可读性和可维护性。常见的数据结构有数组、链表、栈、队列、树、图等。 算法则是解决特定问题的步骤,是对数据运算和操作的详细描述。算法的设计和选择会直接影响到程序的效率,因此,在设计和选择算法时,需要考虑到时间复杂度、空间复杂度等因素。 在实际应用中,数据结构和算法常常是密不可分的。通过对数据结构的理解和运用,以及对算法的学习和研究,可以帮助我们更有效地解决实际问题,提升编程能力。
资源推荐
资源详情
资源评论
收起资源包目录
哈尔滨工业大学《数据结构与算法》、《软件开发实践》作业及实验的Scheme解法。.zip (141个子文件)
bubble-sort.data.bak 138B
heap-sort.data.bak 117B
bubble-sort.data.bak2 138B
dia.dot 344B
tree.dot 332B
floyd.dot 286B
dijkstra.dot 286B
trans.dot 277B
org.dot 277B
bintree.dot 277B
g.dot 191B
after-insert-22.dot 107B
kruskal.dot 101B
prim.dot 101B
before-insert-22.dot 97B
before-insert-15.dot 87B
test.dot 56B
.gitignore 24B
maze.in 171B
data.in 54B
LICENSE 1KB
README.md 4KB
README.md 3KB
README.md 1KB
README.md 1KB
README.md 822B
README.md 718B
README.md 644B
README.md 606B
README.md 336B
README.md 276B
README.md 128B
README.md 85B
README.md 79B
dia.png 31KB
g.png 29KB
trans.png 26KB
bintree.png 25KB
org.png 24KB
tree.png 21KB
after-insert-22.png 18KB
before-insert-22.png 17KB
before-insert-15.png 16KB
prim.png 13KB
kruskal.png 13KB
lf0.png 12KB
lf1.png 11KB
loadfactor.png 11KB
addr1.png 10KB
addr.png 10KB
addr0.png 10KB
test.png 9KB
k1.png 8KB
k0.png 8KB
sort - 副本.png 7KB
sort.png 7KB
open-address.scm 10KB
avltree.scm 9KB
avltree+.scm 9KB
avl-tree.scm 9KB
polynomial-algebra.scm 8KB
bin-tree++.scm 6KB
graph-traversal.scm 4KB
forest.scm 4KB
triple.scm 3KB
diagraph-matrix.scm 3KB
exp.scm 3KB
dijkstra.scm 3KB
bin-tree.scm 3KB
interest-table.scm 3KB
graph-matrix.scm 3KB
graph.scm 3KB
bin-tree+.scm 3KB
list.scm 3KB
heap.scm 2KB
sparse-matrix-transpose.scm 2KB
test.scm 2KB
test.scm 2KB
course.scm 2KB
floyd.scm 2KB
dijkstra.scm 2KB
heap-sort.scm 2KB
korasaju.scm 2KB
tarjan.scm 2KB
graph-matrix.scm 2KB
graph.scm 2KB
matrix.scm 2KB
heap-sort.scm 2KB
zip.scm 1KB
prim.scm 1KB
kruskal.scm 1KB
thread-tree.scm 1KB
alloc.scm 1KB
floyd.scm 1KB
queue-list.scm 1KB
graph-matrix.scm 1KB
queue-machine.scm 1KB
string.scm 1KB
stack-list.scm 1KB
graph-list.scm 999B
共 141 条
- 1
- 2
资源评论
极致人生-010
- 粉丝: 3163
- 资源: 3077
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功