我定义了一个具有以下结构的图形:
'(()()...)
外部列表是图本身,它包含节点和边。
第一个内部列表是所有节点的列表。
接下来的列表是边。边由一对节点组成。
因此,这里是一个具有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"))
这是“build-graph”
(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")))
我不确定在检查第一个节点是否包含在边缘列表后下一步是什么。如果它被包含,我知道需要遍历并删除包含它的列表。然后我需要转到节点列表中的下一个节点并检查...但我不确定如何做到这一点。
任何帮助都将不胜感激!