본문 바로가기

major

C++ Stack 구현

C++에서 STL 라이브러리가 제공되지만,

알고리즘 기초부터 다시 공부하면서 한번 작성 해 봤습니다.

Stack의 생성자, isFull, isEmpty, pop, push와 같은 기본적인 기능을 구현했습니다.

class Stack {
private:
    int top, MaxSize;
    char *stack;
public:
    Stack(int size);
    bool isFull(), isEmpty();
    char pop();
    void push(char element);
    void print();
};

Stack::Stack(int size){
    MaxSize = size;
    stack=new char[MaxSize];
    top=-1;
}

bool Stack::isFull(){
    if(top==MaxSize-1) return 1;
    else return 0;
}

bool Stack::isEmpty(){
    if(top==-1) return 1;
    else return 0;
}

char Stack::pop(){
    if(isEmpty()==1) cout << "Empty!\n";
    else return stack[top--];
}

void Stack::push(char element){
    if(isFull()==1) cout << "Full!\n";
    else stack[++top]=element;
}


void Stack::print(){
    for(int i=0;i<top+1;++i)
        cout << stack[i] << endl;
}

 

int main() {

    Stack stack(5);
    stack.push('a');
    stack.push('b');
    stack.push('c');
    stack.push('d');
    stack.push('e');
    stack.push('f');
    
    stack.pop();
    stack.push('f');
    stack.print();

    return 0;
}

main 결과

기초적인 자료구조부터 다시 공부하니 재미있습니다:D


잘못된 내용이 있다면 언제든지 댓글이나 메일로 알려주시면 감사하겠습니다.

이 포스팅이 도움이 되었다면 공감 부탁드립니다.

궁금한 점은 언제든지 댓글 남겨주시면 답변해드리겠습니다:D