본문 바로가기
스터디/Algorithm

[자료구조] Stack (스택)

by zoodi 2021. 3. 8.
728x90

📌스택이란

한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO (Last In First Out) 구조의 자료 구조

 

📌스택 주요 함수

스택은 LIFO 구조로 가장 최근에 추가한 항목이 가장 먼저 제거된다.

  • push() : 스택에 자료를 넣는 함수
  • pop() : 가장 최근에 추가한 자료를 빼는 함수
  • isFull() : 스택이 가득 찼는지 확인하는 함수
  • isEmpty() : 스택이 비었는지 확인하는 함수

📌스택 사용 사례

  • 웹 브라우저 방문 기록 (뒤로가기)
  • 역수 문자열 만들기
  • 수식의 괄호 검사 (ex: 올바른 괄호 문자열 판단 등)

 

📌구현 코드

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

Stack::Stack(int size){
    MaxSize = size;
    stack=new int[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;
}

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

void Stack::push(int 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(1);
    stack.push(3);
    
    
    stack.pop();
    stack.print();

    return 0;
}

참고 : popcorn16.tistory.com/52

728x90

댓글