Stack & Queue & Deque

셋 모두 Ref 사용 할 것, 마찬가지 원리, 더 많은 함수

 

Stack

#include <iostream>
using namespace std;

int main(){

    // 스택에 집어넣을 값들
    int values[10] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };

    // 스택과 TOP변수
    int stack[100];
    int top = 0; // <= 처음에 배열의 첫번째 원소가 top이라 볼 수 있다.

    // PUSH
    for (int i = 0; i < sizeof(values) / sizeof(int); i++){
        // 아래와 같이 PUSH를 구현
        // top변수를 통해서 계속 top을 바라봅니다.
        // top - 1의 위치에 가장 최근에 넣은 값이 있습니다.
        stack[top++] = values[i];
    }

    // POP and PRINT
    for (int i = 0; i < sizeof(values) / sizeof(int); i++){
        // 아래와 같이 POP을 구현합니다.
        printf("%d ", stack[--top]);
    }
    printf("\n");

    return 0;
}

 

Queue

#include <iostream>
using namespace std;

int main(){

    // 큐에 집어넣을 값들
    int values[10] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };

    // 큐와 HEAD 그리고 TAIL변수
    int queue[100];
    int head = 0, tail = 0; // <= 처음에 배열의 첫번째 원소가 head와 tail이라 볼 수 있다.

    // ENQUEUE
    for (int i = 0; i < sizeof(values) / sizeof(int); i++){
        // 아래와 같이 ENQUEUE를 구현
        // ENQUEUE 할때마다 tail의 위치에 값을 넣고 증가시니다.
        queue[tail++] = values[i];
    }

    // DEQUEUE and PRINT
    for (int i = 0; i < sizeof(values) / sizeof(int); i++){
        // 아래와 같이 DEQUEUE을 구현합니다.
        // DEQUEUE 할때마다 head의 위치의 값을 반환하고 증가시킵니다.
        printf("%d ", queue[head++]);
    }
    printf("\n");

    return 0;
}

 

Deque (덱)

You may also like...