๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š” ์„ธ์ƒ ์†์—์„œ ๋‚˜์˜ ์ƒํ™œ์„ ๊ธฐ๋กํ•˜๊ณ , ๋‚˜๋งŒ์˜ ์†Œ์ค‘ํ•œ ์ˆœ๊ฐ„๋“ค์„ ๋‹ด์•„๋‚ด์–ด ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š” ์„ธ์ƒ ์†์—์„œ ๋‚˜์˜ ์ƒํ™œ์„ ๊ธฐ๋กํ•˜๊ณ , ๋‚˜๋งŒ์˜ ์†Œ์ค‘ํ•œ ์ˆœ๊ฐ„๋“ค์„ ๋‹ด์•„๋‚ด์–ด ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.
  • Life is Simple..โค๏ธŽ
# PRIVATE

template<typename TYPE>

by ROHA__ 2010. 11. 1.


template<typename TYPE>
struct Node
{
 TYPE data;
 Node<TYPE>* next;
};

template<typename TYPE>
// ์Šคํƒ์—์„œ๋Š” template๋ฅผ ํ•˜๋‚˜๋งŒ ํ•ด๋„ ๋œ๋‹ค. ์œ ๋‹ˆํฌํ•œ ๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—. KEY๋Š” ํ•„์š” ์—†์Œ.
class Stack
{
private:
 int count;
 Node<TYPE>* top;

public:
 //ํ•„์š” ํ•จ์ˆ˜ 8๊ฐœ ์ƒ์„ฑ์ž,์†Œ๋ฉธ์ž,ํ‘ธ์‰ฌ.ํŒ

 Stack();
 ~Stack();

 bool PushStack(TYPE dataln); //๋ฐ์ดํ„ฐ ๋ฐ›์•„์„œ ๋
 bool PopStack(TYPE& dataOut); //๋ฐ์ดํ„ฐ ๊ฐ’์„ ์™ธ๋ถ€์— ์ „๋‹ฌ = &
 bool StackTop(TYPE& dataOut); 
 
 bool emptyStack();
 bool fullStack();
 int StackCount();
};

template<typename TYPE>
Stack<TYPE>::Stack()
{
 top = NULL;
 count = 0;
} //Stack<TYPE>::Stack() ์ƒ์„ฑ์ž

template<typename TYPE>
Stack<TYPE>::~Stack()
{
 Node<TYPE>* temp;

 while(top != NULL)  // ๋…ธ๋“œ ํ•˜๋‚˜ํ•˜๋‚˜ ์‚ญ์ œํ•ด์•ผํ•จ!

 {
  temp = top;
  top =  top->next;
  delete temp;
 } //while(top != NULL)

 count = 0;

} //Stack<TYPE>::~Stack()

template<typename TYPE>
bool Stack<TYPE>::PushStack(TYPE dataln)
{
 bool success;
 Node<TYPE>* newPtr;

 newPtr = new NODE<TYPE>; // ๋ฉ”๋ชจ๋ฆฌํ™•๋ณด

 if(count == NULL)
 {
  success = false;
 }

 else
 {
  newPtr->data = dataln;
  newPtr->next = top;
  top = newPtr;
  count++;

  success = true;
 }

 return success;

}//bool Stack<TYPE>::PushStack(TYPE dataln)


template<typename TYPE>
bool Stack<TYPE>::PopStack(TYPE& dataOut)
{
 bool success;
 Node<TYPE>* dltPtr;

 if( count == 0)
 {
  success = false;
 }
 else
 {
  dltPtr = top;
  dataOut = top->data;
  top = top->next;
  count--;
  
  success = true;
 }

} //bool Stack<TYPE>::PopStack(TYPE& dataOut)

template<typename TYPE>
bool Stack<TYPE>::StackTop(TYPE& dataOut)
{
 bool success;

 if( count == 0)
 {
  success = false;
 }
 else
 {
  dataOut = top->data;
  
  success = true;
 }

} //bool Stack<TYPE>::StackTop(TYPE& dataOut)

template<typename TYPE>
int Stack<TYPE>::StackCount()
{
 return count;
}//int Stack<TYPE>::StackCount()

template<typename TYPE>
bool Stack<TYPE>::fullStack()
{
 bool success;
 Node<TYPE>* tt;

 //๋ฉ”๋ชจ๋ฆฌํ™•๋ณดํ•˜๊ธฐ
 tt = new NODE<TYPE>;

 if( tt = NULL )
 {
  return false;
 }
 else
 {
  delete tt;  //ํ•„์š”์—†๋Š” ๋ฉ”๋ชจ๋ฆฌ ์‚ญ์ œํ•˜๊ธฐ
  return true;
 }

 return success;
}//bool Stack<TYPE>::fullStack()


template<typename TYPE>
bool Stack<TYPE>::emptyStack()
{
 // ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด return true๋ฅผ ํ•œ๋‹ค.

 return (count== 0);

}


 

728x90
๋ฐ˜์‘ํ˜•
SMALL