코딩 > 자료구조

자료구조 4
프로필 이미지
Eddie쌤
2020-04-10
조회 157
프로필 이미지
Eddie쌤
2020-04-10
조회 122
프로필 이미지
Eddie쌤
2020-04-10
조회 2830

스택은 LIFO(선입후출)의 구조만 top이라는 변수를 통해서 구현합니다.

큐는 FIFO(선입선출)의 구조만 head와 tail이라는 변수를 통해서 구현합니다.


배열을 이용한 스택 구현

#include <stdio.h>

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;
}



배열을 이용한 큐 구현

#include <stdio.h>

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;
}


Reference

https://twpower.github.io/61-simple-stack-and-queue-by-array-in-c