【发布时间】:2014-11-20 07:54:37
【问题描述】:
我定义了一个具有以下结构的图 '(()()...) 外部列表是图本身,它包含节点和边。 第一个内部列表是所有节点的列表。 以下列表是边缘。边由成对的节点组成。 所以这是一个有 3 个节点和 2 条边的示例图: ((n1 n2 n3) (n1 n2) (n1 n3))
我已经能够像这样删除一条边:
(define (delete-edge edge)
(if (member edge (edges))
(build-graph (nodes) (remove edge (edges)))
"ERROR no edge to remove"))
这是构建图
(define (build-graph nodes edges)
(set! graph (append (list nodes) edges)))
但我无法删除节点。如果我删除一个节点,我还必须删除与之相关的所有边。到目前为止我所拥有的是:
(define (delete-node node)
(cond ((member (car (car graph)) (cdr graph))
("not implemented yet"))
("No Node to delete")))
在我检查了第一个节点是否包含在边列表中之后,我不确定下一步是什么。我知道它是否被包含,我需要检查并删除包含它的列表。然后我需要转到节点列表中的下一个节点并检查...但我不确定如何执行此操作。
任何帮助将不胜感激!
【问题讨论】: