반응형
#include <iostream>
#define MAX_SIZE 100

typedef int Element;
Element queue[MAX_SIZE];
int front;
int rear;

void init_queue(){
    front = rear = 0;
}
int is_empty(){
    return front == rear;
}
int is_full(){
    return (rear + 1) % MAX_SIZE == front;
}
int size(){
    return (rear - front + MAX_SIZE) % MAX_SIZE;
}

void print_queue(){
    std::cout << "queue[" << size() << "] = ";
    int i = (front + 1) % MAX_SIZE;
    for (; i != (rear + 1) % MAX_SIZE; i = (i + 1) % MAX_SIZE) {
        std::cout << queue[i] << " ";
    }
    std::cout << std::endl;
}

void push(Element val){
    if (is_full()){
        fprintf(stderr, "큐 포화 에러\n");
        exit(0);
    }
    rear = (rear + 1) % MAX_SIZE;
    queue[rear] = val;
}

Element pop(){
    if (is_empty()){
        fprintf(stderr, "큐 공백 에러\n");
        exit(0);
    }
    front = (front + 1) % MAX_SIZE;
    return queue[front];
}

Element peek(){
    if (is_empty()){
        fprintf(stderr, "큐 공백 에러\n");
        exit(0);
    }
    return queue[(front + 1) % MAX_SIZE];
}


int main() {
    int i;
    init_queue();
    for (i; i < 10; i++) {
        push(i * 5);
    }
    print_queue();
    std::cout << "\tpop() --> " << pop() << std::endl;
    std::cout << "\tpop() --> " << pop() << std::endl;
    std::cout << "\tpop() --> " << pop() << std::endl;

    print_queue();
    return 0;
}

선입선출 방식의 큐 알고리즘을 구현

 

반응형

'알고리즘' 카테고리의 다른 글

C++ 스택 알고리즘 구현  (0) 2022.06.05