ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++] STACK
    Programming/C++ 2020. 1. 2. 16:37

    STACK 은 기본적으로 LIFO(LAST IN FIRST OUT) 구조로 된 자료구조이다.

    LIFO 가 뭐라함은 말 그대로 나중에 들어간 값이 먼저 나오는 형식이다.

     

    1. 먼저 <stack> 라이브러리를 쓰지않고 직접 구현한 방식이다.

    직접 구현을 할 때에 push와 pop 함수를 따로 만들어 구현한다.

     

    /* 라이브러리 없이 STACK 직접 구현*/
    
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<vector>
    #include<algorithm>
    
    using namespace std;
    int stack[100], top = -1;
    
    void push(int x) {
    	stack[++top] = x;
    }
    int pop() {
    	return stack[top--];
    }
    int main() {
    	int n, k;
    	char str[20] = "0123456789ABCDEF";
    	scanf("%d %d", &n, &k);
    	while (n > 0) {
    		push(n % k);
    		n /= k;
    	}
    	while (top != -1) {
    		printf("%c", str[pop()]);
    	}
    	return 0;
    }

     

    2. #include<stack> 을 헤더에 추가해 사용하는 방법이다.

    메소드, 즉 사용할 수 있는 내장함수들만 알고 있다면 훨씬 사용하기 간편할 것이다.

     

    /*STACK*/
    
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<vector>
    #include<algorithm>
    #include<stack>
    
    using namespace std;
    int main() {
    	int n, k;
    	stack<int> s;
    	char str[20] = "0123456789ABCDEF";
    	scanf("%d %d", &n, &k);
    	while (n > 0) {
    		s.push(n % k);
    		n /= k;
    	}
    	while (!s.empty()) {
    		printf("%c", str[s.top()]);
    		s.pop();
    	}
    	return 0;
    }
    STACK의 대표적인 멤버
    s.pop() 스택의 가장 상단의 값을 삭제
    s.push(param) param을 스택에 push
    s.empty()

    스택이 비어있나 체크

    비어있으면 1 , 아니면 0 return

    s.top() 스택의 가장 상단의 값을 return 
    s.size() 스택의 사이즈 return

    'Programming > C++' 카테고리의 다른 글

    [C++] DFS 깊이우선탐색  (0) 2020.01.05
    [C++] Recursion 재귀함수  (0) 2020.01.03
    [C++] Vector  (0) 2019.12.23
Designed by Tistory.