Next: 8.2 隣接点リストを頂点シンボルの属性リストで表す
Up: 8 グラフの記述
Previous: 8 グラフの記述
連想リスト(association list)とは,あるものとあるもののペアをコンスの形
で表現したものです.car部に連想のキーとなるデータをおき,cdr部にそのキー
で検索されるデータをおきます.
たとえば,ソフトウェアの講義とそこで用いられている言語との対応関係を
覚えておいて,講義名からその言語を調べるという場合に以下のように使います.
<cl> (setq *lecture-language*
'((software1 . pascal)
(software2 . c)
(software3 . lisp)
(software4 . smalltalk)))
((software1 . pascal) (software2 . c)
(software3 . lisp) (software4 . smalltalk))
<cl> (assoc 'software3 *lecture-language*)
(software3 . lisp)
<cl> (assoc 'software4 *lecture-language*)
(software4 . smalltalk)
<cl> (defun language-of (lecture database)
(cdr (assoc lecture database)))
language-of
<cl> (language-of 'software1 *lecture-language*)
pascal
このようにデータベースからデータをとってくる場合にassocを用います.連
想リストを作る関数としてaconsや pairlis があります.また,assocはデータ
をとり出す関数ですが,:test, :keyの引数を与えることができます.
<cl> (acons 'a '(1) '((b 2) (c 3)))
((a 1) (b 2) (c 3))
<cl> (pairlis '(a b c) '(1 2 3))
((c . 3) (b . 2) (a . 1))
<cl> (pairlis '(a b c) '((1) (2) (3)))
((c 3) (b 2) (a 1))
<cl> (assoc 'a '((a 1) (b 2) (c 3)))
(a 1)
<cl> (assoc '(b) '(((a) 1) ((b) 2) ((c) 3)))
nil
<cl> (assoc '(b) '(((a) 1) ((b) 2) ((c) 3))
:test #'equal)
((b) 2)
<cl> (assoc 'c '(((a) 1) ((b) 2) ((c) 3))
:test #'equal)
nil
<cl> (assoc 'c '(((a) 1) ((b) 2) ((c) 3))
:test #'equal :key #'car)
((c) 3)
この連想リストを用いてグラフを表現したものが*graph2*です.
generated through LaTeX2HTML. M.Inaba 平成18年5月6日