Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Visual Micro
- Array
- WinAPI
- Arduino
- c++
- 아두이노 소스
- 운영체제
- Algorithm
- arduino compiler
- 아두이노 컴파일러
- list
- html
- 아두이노
- Deque
- Stack
- 자료구조
- stl
- vector
- map
- set
- 수광 소자
- 통계학
- 라인트레이서
- priority_queue
- LineTracer
- C언어
- 컴퓨터 그래픽스
- 시스템프로그래밍
- queue
- directx
Archives
- Today
- Total
Kim's Programming
[C++/템플릿으로 만드는 자료구조] 스택(Stack) 본문
C++/템플릿으로 제작한 스택 소스입니다. 사용시에는 iostream을 인클루드 시켜야합니다.
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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | template<typename Type> class Node { public: Type item; Node<Type> *Link; }; template<typename Type> class Stack { private: Node<Type> *Header; public: Stack(); ~Stack(); bool Is_Empty(); void Push(Type Item); void POP(); Type Peek(); void Printing(); void Counting(); }; template<typename Type> Stack<Type>::Stack() { this->Header = NULL; } template<typename Type> Stack<Type>::~Stack() { } template<typename Type> bool Stack<Type>::Is_Empty() { if (this->Header == NULL) { printf("Stack is Empty\n"); return true; } printf("Stack is not Empty\n"); return false; } template<typename Type> void Stack<Type>::Push(Type Item) { Node<Type> *New = new Node<Type>; if (this->Is_Empty()) { this->Header = New; New->item = Item; New->Link = NULL; return; } else { New->item = Item; New->Link = this->Header; this->Header = New; return; } } template<typename Type> void Stack<Type>::POP() { if (this->Is_Empty()) { return; } Node<Type> *Cur = this->Header; this->Header = Cur->Link; delete(Cur); } template<typename Type> Type Stack<Type>::Peek() { if (this->Is_Empty()) { return 0; } Node<Type> *Cur = NULL; Node<Type> *Top = this->Header; int Return_Value; while (Top->Link != NULL) { Cur = Top; Top = Top->Link; } Return_Value = Top->item; Cur->Link = NULL; delete(Top); return Return_Value; } template<typename Type> void Stack<Type>::Printing() { if (Is_Empty()) { return; } Node<Type> *Cur = this->Header; std::cout << "(Top ->)"; while (Cur != NULL) { std::cout << Cur->item << "->"; Cur = Cur->Link; } std::cout << "(<-Bottom)" << std::endl; } template<typename Type> void Stack<Type>::Counting() { Node<Type> *Cur = this->Header; int count = 0; while (Cur != NULL) { count++; Cur = Cur->Link; } std::cout << "this Stack has " << count << " Nodes" << std::endl; } | cs |
Stack은 STL으로 사용시엔 stack을 인클루드 하여 사용하게 됩니다.
같이보기
2015/12/13 - [Programming/자료구조] - [C로 만드는 자료구조]스택(Stack) - 배열
2015/12/13 - [Programming/자료구조] - [C로 만드는 자료구조]스택(Stack) - 동적할당
'Programming > Data Structure' 카테고리의 다른 글
[C++/템플릿으로 만드는 자료구조] 덱(Deque) (0) | 2016.01.18 |
---|---|
[C++/템플릿으로 만드는 자료구조] 큐(Queue) (0) | 2016.01.18 |
[C++/템플릿으로 만드는 자료구조] 이중연결원형리스트(Doubly Circular Linked List) (0) | 2016.01.18 |
[C++/템플릿으로 만드는 자료구조] 단순원형연결리스트(Circular Linked List) (0) | 2016.01.18 |
[C++/템플릿으로 만드는 자료구조] 단순연결리스트(Linked List) (1) | 2016.01.18 |