알고리즘/C++

3-1. 연결 스택 (Linked Stack)

dyeoma 2020. 7. 24. 13:45

연결 리스트로 Stack 구현

 

Stack Class 정의

class LinkedStack;	// 전방 선언

class ChainNode {
friend class LinkedStack;
private:
   int data;
   ChainNode *link;
public:
   ChainNode (int element=0, ChainNode* next=0) // 생성자
      { data=element; link=next; }
};

class LinkedStack{
private:
   ChainNode *top;
public:
   LinkedStack() { top=0; };		// 생성자
   void Push(const int&);		// 삽입 함수
   int* Pop(int&)			// 삭제 함수
};

 

연결 Stack 삽입 함수

void LinkedStack::Push(const int& e) {
   top = new ChainNode(e, top);
}

 

연결 Stack 삭제 함수

int* LinkedStack::Pop (int& x){
// top node 삭제 후 x에 값 저장, x 주소 반환
   
   if (top==0)	// empty stack
      return 0;
      
   ChainNode* delNode = top;
   x = top->data;
   top = top->link;		// top node를 다음 node로 변경
   delete delNode;		// node 삭제
   return &x;
}