336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
스택(stack)이란?
마지막에 삽입한 데이터가 처음 꺼낼 수 있는 자료구조.
아래는 동적할당으로 구현하는 방법으로 template 을 사용하지 않고, 데이터는 int를 가진 스택을 구현한 코드이다.
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 | #include<cstdio> class stack { private: struct node { int data; node* prev; }; node* ptr_top; int element; public: stack() { ptr_top = NULL; element = 0; } ~stack() { while (!empty()) { pop(); } } bool empty() { if (ptr_top == NULL) return true; return false; } void push(int input) { node* new_node = new node(); new_node->data = input; new_node->prev = ptr_top; ptr_top = new_node; printf("push data %d\n", ptr_top->data); ++element; } void pop() { if (empty()) return; node* prev_node = ptr_top->prev; printf("pop data %d\n", ptr_top->data); delete ptr_top; ptr_top = prev_node; --element; } int top() { if (empty()) return -1; return ptr_top->data; } int size() { return element; } }; int main() { stack* s = new stack(); for (int i = 1; i < 50; i++) { s->push(2 * i + 1); printf("%d\n", s->top()); } delete s; return 0; } | cs |