✨컴공주✨ [1052682] · MS 2021 (수정됨) · 쪽지

2025-01-27 22:10:30
조회수 194

컴공 일기269

게시글 주소: https://old.orbi.kr/00071606014

알고리즘 큐로 넘어왔습니다.

알고리즘 문제를 풀기 전에는 늘 그것과 관련된 자료구조를 직접 구현을 해봅니다.

이유야 여러가지 있겠지만, 사고방식을 세부 구현에 맞추다 보면 알고리즘 해법을 조금 더 잘 찾을 수 있거든요.





#include <stdio.h>

#include <stdlib.h>

#define MAX 5

typedef struct CIRCULAR_QUEUE

{

    int rear;

    int front;

    int data[MAX];

}queue;


int is_empty(queue* q)

{

    return q->rear == q->front;

}


int is_full(queue* q)

{

    return (q->rear+1) % MAX == q->front;

}


void push(queue* q, int pData)

{

    if(is_full(q))

    {

        printf("QUEUE IS FULL!!!\n");

        return;

    }

    q->data[q->rear] = pData;

    q->rear = (q->rear + 1) % MAX;

    printf("Pushed : %d\n", pData);

}


int pop(queue* q)

{

    if(is_empty(q))

    {

        printf("QUEUE IS EMPTY!!!\n");

        return -1;

    }

    int data = q->data[q->front];

    q->front = (q->front + 1) % MAX;

    printf("Popped : %d\n", data);

    return data;

}


void printQueue(queue* q)

{

    int idx = q->front;

    while(idx != q->rear)

    {

        printf("%d ", q->data[idx]);

        idx = (idx + 1) % MAX;

    }

}



int main()

{

 

   //테스트를 위한 코드


   queue* q = (queue*)malloc(sizeof(queue));

   q->rear = q->front = 0;

   push(q, 10);

   push(q, 20);

   push(q, 30);

   push(q, 40);

   

//error

   push(q, 50);


   printQueue(q);

   printf("\n");


   pop(q);

   pop(q);

   pop(q);

   pop(q);


   //error

   pop(q);

}

0 XDK (+0)

  1. 유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.


  • 첫번째 댓글의 주인공이 되어보세요.