Stack은 Last In-First Out의 자료구조로 가장 나중에 들어온 원소가 가장 먼저 나오게되는 자료구조이다. Stack은 top이라는 포인터 변수를 두어서 push, pop하며 이 top포인터를 조절하도록 구현된다.
Stack 자료구조는 주로 재귀 호출에 주로 사용되게 되고 재귀 호출로 불린 함수는 가장 나중에 불린 함수가 가장 먼저 실행되는 순서를 가지게 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| #include <cstdio> #include <stdlib.h>
using namespace std;
class Stack { private: int top = -1; int max_size; int *arr; void allocate() { arr = (int*)malloc(sizeof(int) * max_size); } public: Stack() { max_size = 10; allocate(); }; Stack(int size) { max_size = size; allocate(); };
bool isFull() { return top == max_size ? true : false; } bool isEmpty() { return top == -1 ? true : false; }
void push(int a) { top++; arr[top] = a; }
int pop() { return arr[top--]; }
};
void main() { Stack s1;
for (int i = 0; i < 10; i++) { s1.push(i); }
while (!s1.isEmpty()) { printf("%d ", s1.pop()); } }
|