3 ;;; make a simple graph
4 (let ((g (make-container 'graph-container)))
5 (loop for v in '(a b c d e) do
7 (loop for (v1 . v2) in '((a . b) (a . c) (b . d) (c . e)) do
8 (add-edge-between-vertexes g v1 v2))
11 ;;; make a directed graph
12 ;; adding the vertexes up front not really necessary
13 (let ((g (make-container 'graph-container :default-edge-type :directed)))
14 (loop for (v1 . v2) in '((a . b) (a . c) (b . d) (c . e)) do
15 (add-edge-between-vertexes g v1 v2))
19 ;;; make a graph, find some things
20 (let ((g (make-container 'graph-container)))
21 (loop for (src dst) in '((a b) (a c) (c d) (a d) (d e) (e f) (b f)) do
22 (add-edge-between-vertexes g src dst))
24 (print (find-vertex g 'a))
25 (print (find-vertex g 'q nil))
26 (print (find-edge-between-vertexes g 'a 'b))
27 (print (find-edge-between-vertexes g 'a 'f :error-if-not-found? nil))
29 (format t "~%Neighbors of vertex A:")
30 (iterate-neighbors (find-vertex g 'a) #'print))