/////////////stack.h////////////////// #pragma once #include <iostream> class CStack { public: CStack(void); ~CStack(void); void push(int _data); int pop();
protected: int m_Data; CStack* m_pNext; CStack* my_Point; static CStack* focus;
};
|
////////////////stack.cpp /////////////////////// #include "stack.h" CStack* CStack::focus=NULL; CStack::CStack(void) { m_pNext = this; m_Data = 0; my_Point = this; } CStack::~CStack(void) { } void CStack::push(int _data) { // 1. 메모리 할당하고 데이터 입력 CStack* pdata = new CStack; pdata->m_Data = _data;
if(focus == NULL) { focus = pdata; m_pNext = pdata; pdata->my_Point=this;
}else { pdata->my_Point = focus;
focus ->m_pNext = pdata; focus = pdata; }
} int CStack::pop() {
if(NULL == this->m_pNext) return -1; CStack temp = *focus; focus = focus->my_Point;
delete focus->m_pNext; focus->m_pNext = NULL; return temp.m_Data;
} |
//////////////main.cpp ///////////////////////// #include <iostream> #include "stack.h" #define PRINT_COUT(X) std::cout << X << std::endl; int main() { CStack st; st.push(1); st.push(2); st.push(3);
PRINT_COUT(st.pop()); PRINT_COUT(st.pop()); PRINT_COUT(st.pop()); PRINT_COUT(st.pop()); st.push(4); st.push(5);
PRINT_COUT(st.pop()); st.push(6); PRINT_COUT(st.pop()); PRINT_COUT(st.pop()); return 0; } |
POP
- C++ Stack(focus + back) 2013.12.11
C++ Stack(focus + back)
2013. 12. 11. 22:21