スタックの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の順で出力されることがわかります。