【VBA】スタックを実装する

VBA
この記事は約3分で読めます。

以前VBAでキューを実装しました。今回はVBAでスタックを実装してみます。

【VBA】キューを実装する
VBAにデータ構造のキューがないので クラスモジュールを使用してキューを実装してみます。

スタックの概要

スタックとは、コンピュータプログラムで使われるデータ構造のひとつです。
最後に入れたデータが最初に取り出されるLIFO(Last In First Out)といわれるデータ構造になります。

スタックを使用すると、データを一番最後に追加したものから順に取り出すことができます。
スタックにデータを追加することを「プッシュ(Push)」、スタックからデータを取り出すことを
「ポップ(Pop)」と呼びます。

例えば、数字のリストがあるとして、このリストをスタックとして使用することで
最後に追加された数字から順に取り出すことができます。

 

 

 

 

 

スタックの実装

クラスモジュールを使用して、スタックを実装します。下記の機能を実装してみます。

  • 動的配列を利用してスタックを実装する。
  • スタックにデータを入れるpushメソッドを実装する。
  • スタックからデータを取り出すpopメソッドを実装する。
  • スタック内のデータ数を取得するcountメソッドを実装する。
  • スタックの内容をVariant型の配列として返すgetContentsメソッドを実装する。
  • スタックにデータが無い時にpopを実行するとエラーをraiseする。エラーの番号は1001とする。

スタックのクラスモジュールは以下になります。

 

スタッククラスのテスト

スタッククラスをテストするコードは以下になります。

 

1→collection(value=”valueテスト”,key=”keyテスト”)→”a”の順でスタックにデータを3個追加します。

Stackクラスのcountを実行すると、現在のスタックの個数を表示します。
先程データを3つ追加したので3個と表示されます。

 

getContentsを利用して、スタックの内容を配列に格納しています。

スタックからデータを取り出しています。
最後に追加したものから順々に取り出していきます。
“a”→collection(value=”valueテスト”,key=”keyテスト”)→1

collection型はMsgboxで直接表示できないので、一旦変数に代入し、キーを指定して値を表示しています。

スタックに値がない状態でpopを実行するとエラー番号は1001をraiseします。

GitHub

GitHub - kazusapg/vba_stack
Contribute to kazusapg/vba_stack development by creating an account on GitHub.

コメント