/////////////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;

}


'C++' 카테고리의 다른 글

콘솔 맵 그리기  (0) 2013.09.20

+ Recent posts