Chapter 12 练习 (Exercises)
- 画三个不同的树,能够被打印成
((A) (A) (A))
。写一个表达式来生成它们。 - 假设
make-queue
,enqueue
和dequeue
是按照图 12.7 中的定义,用箱子表式法画出下面每一步所得到的队列的结构图:
> (setf q (make-queue))
(NIL)
> (enqueue 'a q)
(A)
> (enqueue 'b q)
(A B)
> (dequeue q)
A
- 定义一个函数
copy-queue
,可以返回一个 queue 的拷贝。 - 定义一个函数,接受两个输入参数
object
和queue
,能将object
插入到queue
的首端。 - 定义一个函数,接受两个输入参数
object
和queue
,能具有破坏性地将object
的第一个实例 (eql
等价地) 移到queue
的首端。 - 定义一个函数,接受两个输入参数
object
和lst
(lst
可能是cdr-circular
列表),如果object
是lst
的成员时返回真。 - 定义一个函数,如果它的参数是一个
cdr-circular
则返回真。 - 定义一个函数,如果它的参数是一个
car-circular
则返回真。
脚注
[1] | 比如,在 Common Lisp 中,修改一个被用作符号名的字符串被认为是一种错误,因为内部的定义并没声明它是从参数复制来的,所以必须假定修改传入内部的任何参数中的字符串来创建新的符号是错误的。 |
[2] | 函数名称中 n 的含义是 “non-consing”。一些具有破坏性的函数以 n 开头。 |
当前内容版权归 readthedocs 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 readthedocs .