目前,我正在学习伯克利2011年夏季CS3L课程,并且很难理解方框和指针图。如何建立和解释它们。
提供的说明是这里。然而,我仍然没有“得到它”。
我理解列表是对的组合,并且一对的cdr可能指向另一对。我还知道,cdr所指向的对可能是另一个列表。我只是不明白如何在图表中把它全部画出来。
作为参考,以下是我所面临的一个问题的例子:
(define cal
(list (append (list (cons (list 1 2) (cons 3 '())))
(list (cons 4 (cons 5 '()))))
6
7))给出像上面这样的代码,我应该画出方框和指针图,然后能够说出car和cdr的组合对于获得列表中的任何给定数字是必要的。
同样,作为参考,下面是我应该能够得出的图表:

重申一下,我要找的是一段视频或一篇文章,可以更清楚地解释框图和指针图的构建。
预先感谢任何人愿意为我指出正确的方向。
发布于 2019-08-09 12:28:30
注意,这个答案并不能鼓励你作弊:如果你正在做一门要求你能够绘制方框和指针图的课程,那么你应该能够做到这一点,而不是让一个程序为你做。但是这个程序可以帮助你学习。
学习方框和指针图如何工作的一个好方法是能够与知道如何绘制它们的程序对话。在Lisp很久以前的黄金时代,我们的Lisp机器上有很好的对话接口,可以将图形和文本混合在一起,还有很好的图形绘制程序,可以轻松地从这些程序中构建工具来实现这一点。使用这些工具,您可以使用conses构建各种结构,并让程序为您绘制图表,从而很好地掌握了这些结构的工作原理。
好吧..。原来Lisp的黄金时代就是现在。如果你使用球拍 (如果你还没有使用它,你可以使用球拍),那么有一个非常棒的包叫做斜纹,它可以这样做。它不是与Racket发行版捆绑在一起的,但是要安装它,您可以使用DrRacket的包管理器,也可以只使用
raco pkg install --auto sdraw会安装它的。现在,您可以(在DrRacket窗口中,这在终端会话中不起作用)只需与Racket对话,并让它为您绘制反树:

只要简单地与语言互动,让它为你画东西,你就能对不同的结构是如何结合在一起的,有很好的感觉。
https://stackoverflow.com/questions/57404403
复制相似问题