不変スタック | 目次 |
最新版は Scala Documentation に移行しました。
後入れ先出し (LIFO: last in first out) の列が必要ならば、スタック (Stack) がある。 push メソッドを使ってスタックに要素をプッシュ、pop を使ってポップ、そしてtop を使って削除することなく一番上の要素を読み込むことができる。これらの演算は、全て定数時間で行われる。
以下はスタックに対して行われる簡単な演算の例だ:
scala> val stack = scala.collection.immutable.Stack.empty | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
stack: scala.collection.immutable.Stack[Nothing] = Stack() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
scala> val hasOne = stack.push(1) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
hasOne: scala.collection.immutable.Stack[Int] = Stack(1) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
scala> stack | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
stack: scala.collection.immutable.Stack[Nothing] = Stack() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
scala> hasOne.top | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
res20: Int = 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
scala> hasOne.pop | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
res19: scala.collection.immutable.Stack[Int] = Stack() |
機能的にリストとかぶるため、不変スタックが Scala のプログラムで使われることは稀だ: 不変スタックの push はリストの :: と同じで、pop はリストの tail と同じだ。
続いては、不変キュー
不変スタック | 目次 |