整数型のデータを格納することができる素朴なスタック構造です。
実態はほぼスタックポインタ(のように振る舞う変数)が付与されただけの整数型配列です。
基本的に全てのメンバ変数はstack.hで実装された関数によってのみ変更されるべきで、直接呼び出すべきではありません。1
現状は配列の拡張を実装していないので、どうしても拡張したい場合は新たに生成し直す必要があります。
型 識別子 | 説明 | 備考 |
---|---|---|
int size | データを格納できる上限数です。 | |
int *datavec | 実際にデータを格納している領域の先頭を参照するポインタです。実装上は整数型ポインタですが実態は整数型配列です。スタックの「底」、つまり最も古いデータを参照しています。 | |
int top | スタックの「頂上」の上、次にデータが格納される場所を示す番号です。 |
型 識別子(引数型) | 説明 | 備考 |
---|---|---|
Stack *initStack(int) | 構造体を新たに生成し、そのポインタを返します。 | |
void freeStack(Stack*) | 構造体を削除しメモリを解放します。 | |
int stackLength(Stack*) | 格納されているデータの個数を返します。 | |
bool push(Stack*, int) | 新たにデータを追加します。スタックが既に満杯の場合のみ偽値を返します。 | |
int pop(Stack*) | 頂上のデータを取り出します。スタックが空の場合はエラーメッセージを出力して終了します。 | |
void printStack(Stack*) | スタックの内容を[頂上->底]の順にリスト形式で標準出力します。 |
Footnotes
-
Javaならば全てのフィールドがprivateで実装されているでしょう。 ↩