スタックのC言語による実装
サンプルプログラム
ここでは、実際にC言語によるスタックの実装を紹介します。まずは、以下のサンプルを実行してみてください。
stackc-1:main.c
#include <stdio.h>
// 配列の最大の大きさ
#define MAX_LENGTH 100
typedef struct{
// データを格納数る配列
int array[MAX_LENGTH];
// 現在の位置
int current;
}STACK;
// スタックの初期化
void init(STACK*);
// 値のプッシュ
int push(STACK*,int);
// 値のポップ
int pop(STACK*,int*);
void main(){
STACK s;
int value;
init(&s); // スタックを初期化
// 1,2,3の順で値をプッシュ
push(&s,1);
push(&s,2);
push(&s,3);
// 値をポップ
while(pop(&s,&value)){
printf("%d ",value);
}
printf("¥n");
}
// スタックの初期化
void init(STACK* pStack)
{
int i;
for(i = 0; i < MAX_LENGTH; i++){
pStack->array[i] = 0;
}
// カレントの値を0に。
pStack->current = 0;
}
// 値のプッシュ
int push(STACK* pStack,int value)
{
if(pStack->current < MAX_LENGTH){
// まだデータが格納できるのなら、データを格納し、一つずらす。
pStack->array[pStack->current] = value;
pStack->current++;
return 1;
}
// データを格納しきれなかった
return 0;
}
// 値のポップ
int pop(STACK* pStack,int* pValue)
{
if(pStack->current > 0){
// まだデータが格納できるのなら、データを格納し、一つずらす。
pStack->current--;
*pValue = pStack->array[pStack->current];
return 1;
}
return 0;
}
3 2 1
このプログラムでは、データを1,2,3の順でpushしています。それをpopすると、逆に3,2,1の順で出力されることがわかります。






