スタックというのは、データの挿入と削除が頂上(1端)でのみ行われるデータ構造で、後入れ先出し形式(Last In First Out)をとります。これは、最後に格納した要素から先に取り出されることを意味します。
ちなみに、スタックでは挿入をプッシュ(PUSH DOWN)、削除をポップ(POP UP)と呼びます。
#include <iostream>#define STACK_MAX 5#define TRUE 1#define FALSE 0static int stack[STACK_MAX];static int maxSize = STACK_MAX;static int sp = -1;void push(int d) {stack[++sp] = d;}int pop() {return stack[sp–];}int peek() {return stack[sp];}int isFull() {if (sp == maxSize – 1) {return TRUE;}return FALSE;}int isEmpty(){if (sp == -1) {return TRUE;}return FALSE;}int main() {int data = 10;printf(“—push start—\n”);while (!isFull()) {push(data);printf(“push data:%d\n”, peek());data = data + 10;}printf(“—pop start—\n”);while (!isEmpty()) {printf(“pop data:%d\n”, pop());}}
出力は以下の通りです。確かに最後にpushしたdata50が最初にpopされる後入れ先出し方式になっていますね。
—push start—push data:10push data:20push data:30push data:40push data:50—pop start—pop data:50pop data:40pop data:30pop data:20pop data:10
ご面倒おかけしますが、たまにはクリックお願いします!