首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我在方案中尝试用二叉树制作电话簿时出错了

我在方案中尝试用二叉树制作电话簿时出错了
EN

Stack Overflow用户
提问于 2016-10-18 18:25:36
回答 1查看 101关注 0票数 0
  1. 编写一个函数(使电话簿名左右),该函数接受一个名称、一个电话号码和左、右子树,并创建一个新的电话簿树。您的树节点应该是表单((名称)。(电话号码)左树右树),其中的名字和电话号码是一对. 我得到了: (定义(制造电话簿名称左右)(列表(指定名称号)左右)
  2. 编写函数获取名称、获取号、左转和右转,这些函数从给定的电话簿返回适当的数据。 我得到了: (定义(获取图书)(caar书))(定义(获取号码簿)(cdar图书))(定义(左转图书)(cddr书))(定义(获得正确的图书)(cddr书))
  3. 编写一个函数(插入图书名号),将一个新条目插入电话簿。您可以使用内置函数“string=?”、“string>?”和字符串(定义(插入书名编号) (cond (空?电话号码‘(() '() (string=?)(获取姓名)(string<?(得名书)(制造电话簿的名称号码(插入(左转)姓名)(正确的图书)) ((string>?))

它给出了错误:

代码语言:javascript
复制
caar: contract violation
  expected: (cons/c pair? any/c)
  given: '("Harry" 5550011)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-18 21:21:29

有几个小错误。

  1. (null? name)应该是(null? book)
  2. 在同样的情况下,您忘记了将结果表达式括起来:(make-phone-book name number '() '())
  3. 当您递归时,您应该将(get-name book)(get-number book)传递给make-phone-book,而不是namenumber

在测试时,只使用make-phone-bookinsert创建树。

不要用手写树。

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

https://stackoverflow.com/questions/40115434

复制
相关文章

相似问题

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