컴공 일기269
게시글 주소: https://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)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
평가원 수학에서 쓰는 그래프 19 3
일러스트레이터가 답인가요 하 어도비에 돈주기 좀 그런데 다른 방법 알고계시면 공유좀 ㅠㅠ
-
수능특강 음악지문 0 0
평가원에서 음악지문으로 연계할 확률 거의 없다고 봐야하나요? 이제 잘 안되면 유기해도 될까요?
-
지금 새기분 늦었나요? 1 0
본인 국어공부 아예 안해도 낮1~높2정도는 나오는듯 근데 중간1~높1 맞고 싶어서...
-
덬코 좀 주세요 40 5
원하는 멘트 한 마디 해드립니다..
-
국어 공부 2 0
원래 듣고 있는 강의가 안맞아서 올오카로 갈아타려고 하는데 지금 이 시점에서 갈아타도 되나요
-
아 고백공격하고 싶다 3 0
라고 할 뻔~
-
님들아 추천좀 4 0
검은 후드티/아디다스 집업 + 에어팟맥스 할건데 (가을부터) 색 추천 ㄱㄱ
-
혹시 안되면 92는 나옵니까,, 계산 틀려서 29번날림,,,
-
수학 기출 강의 ㅊㅊ 0 0
수분감 교재가 있는데 이번에 기현T로 갈아타게 됐습니다. 수학 4점 기출하려고...
-
이쿠라에 간장 뿌려먹고싶다 2 0
톡톡톡
첫번째 댓글의 주인공이 되어보세요.