알고리즘/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;
}