[자료구조] Stack (스택)

2021. 3. 8. 09:54·스터디/Algorithm
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

'스터디 > Algorithm' 카테고리의 다른 글

[Algorithm] Prefix Sum 구간합  (0) 2021.05.11
[자료구조] Queue (큐)  (0) 2021.03.08
[Algorithm] Binary Search (이분 탐색) 개념  (0) 2021.03.02
[Algorithm] Binary Search (이분 탐색)  (0) 2021.02.26
자료형 크기 및 범위 정리  (0) 2021.02.26
'스터디/Algorithm' 카테고리의 다른 글
  • [Algorithm] Prefix Sum 구간합
  • [자료구조] Queue (큐)
  • [Algorithm] Binary Search (이분 탐색) 개념
  • [Algorithm] Binary Search (이분 탐색)
zoodi
zoodi
IT/개발 관련 지식을 기록하는 블로그입니다.
  • zoodi
    오늘의 기록
    zoodi
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 후기
        • 컨퍼런스
        • 일상리뷰
      • 금융경제
        • 뉴스
        • 금융IT용어
        • 경제 및 부동산
      • 코딩 테스트
      • 스터디
        • JAVA
        • Kotlin
        • Spring
        • React, Nextjs
        • 인공지능 AI
        • Cloud & k8s
        • Kafka
        • Database
        • Network
        • Algorithm
        • Hadoop
        • LINUX
        • R Programming
        • 기타 (소공, 보안)
      • 도서
      • 기타
  • 블로그 메뉴

    • 홈
    • 스터디
    • 금융경제
    • 후기
    • 기타
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    Spring
    C++
    금융용어
    MySQL
    리트코드
    kafka
    LeetCode
    codility
    자료구조
    코딜리티
    이분탐색
    springboot
    db
    네트워크
    자바
    코테
    pythoncodingtest
    java
    코테공부
    스프링부트
    쿠버네티스
    프로그래머스
    코딩테스트
    Kotlin
    Python
    카카오코테
    스프링
    코딩
    CodingTest
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
zoodi
[자료구조] Stack (스택)
상단으로

티스토리툴바