データ構造
スカラー(scalar)
- 整数、実数、ビット(真(true)または偽(false))
リスト(list)
- リスト(list) q = [ x1, x2, ..., xn ] は任意の要素の一連であり、
その内の幾つかは繰り返されているかもしれない
- 要素 x1 はリストの頭(head)、xn は尾(tail)である
- x1 と xn は端(ends)である
- リストの要素数、サイズ n を |q | で表す
- [ ] は、要素を持たない空のリスト(empty list)を表す
- 2つの要素のリスト [ x1, x2 ] は、順序対(ordered pair)と呼ばれる
リストの操作
基本的な操作
- Access(アクセス)
リスト q = [ x1, x2, ..., xn ] と整数 i が与えられて、
リストの i 番目の要素 q (i ) = xi を返す
- Sublist(サブリスト)
リスト q = [ x1, x2, ..., xn ] と整数 i と i が与えられて、
q [i ..j ] = [ xi , xi+1, ..., xj ] を返す
- Concatenation(連結)
2つのリスト q = [ x1, x2, ..., xn ] と r = [ y1, y2, ..., ym ] が与えられて、
q &r = [ x1, x2, ..., xn , y1, y2, ..., ym ] を返す
端を処理する操作
- Access head(頭のアクセス)
リスト q が与えられて、q (1) を返す
- Push(プッシュ)
リスト q と要素 x が与えられて、q を x &q = [ x , x1, x2, ..., xn ] で置き換える
- Pop(ポップ)
リスト q が与えられて、q を q [2..n ] = [ x2, x3, ..., xn ] で置き換える
- Access tail(尾のアクセス)
リスト q が与えられて、q (|q |) = q (n ) = xn を返す
- Inject(後入れ)
リスト q と要素 x が与えられて、q を q &x = [ x1, x2, ..., xn , x ] で置き換える
- Eject(後出し)
リスト q が与えられて、q を q [1..n -1] = [ x1, x2, ..., xn -1 ] で置き換える
スタック(stack)
- 頭のアクセスとプッシュとポップの操作が可能なリスト
- 挿入と削除に関して、後入れ先出し(last-in first-out)方式によって機能する
キュー(queue)
- 頭のアクセスと後入れとポップの操作が可能なリスト
- 挿入と削除に関して、先入れ先出し(first-in first-out)方式によって機能する
出力制限キュー(output-restricted queue)
- 後出し以外の全ての操作が可能なリスト
デキュー(deque, double-ended queue)
- 端に関する6つの操作が全て可能なリスト
集合(set)
- 集合(set) s = { x1, x2, ..., xn } は異なる要素の集まりであり
暗黙の順序付けはない
- リストの要素数、サイズ n を |s | で表す
- { } は、要素を持たない空集合(empty set)を表す
集合の操作
- 併合、結び(union) ∪
- 交わり(intersection) ∩
- 差(difference) −
写像(map)
- 写像(map) f = { [ x1, y1 ], [ x2, y2 ], ..., [ xn, yn ] } は、順序対の集合で、
どの2つも同じ第1座標(頭)を持たない
- f の定義域(domain)は、第1座標の集合 domain(f ) = { x1, x2, ..., xn }
- f の値域(range)は、第2座標の集合 range(f ) = { y1, y2, ..., yn }
- f をその定義域から値域への関数とみなし、定義域の要素 xi におけるf の値(value)f (xi ) は、第2座標 yi に対応する