컴공 일기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를 선물하세요.
-
끝없는 하늘의 건너편에서 1 0
기다리고 있을까 찾고 있는 것 어제보다 조금 더 앞을 향해 지금, 손을 뻗어 1년도...
-
나도 올려줘 30 37
두번째 합격증
-
수특 사용설명서 필수임? 4 0
수특 사용설명서(독서,문학) 사는게 좋나요? 뭔가 잘 정리되어있어서 좋을 것...
-
어몽어스 팟 구함 4 3
질이랑 할거임 빨리빨리ㄱㄱ 갤주도 홍보해줘라
-
답변점
-
개재밌는 네이버 웹툰 9 0
좀비? 괴물? 그런 웹툰에서 3위 : 좀간 네이버 완결 웹툰 2위 : 그림자의 밤...
-
의대붙었다 올려라 ㅇㅇ 30 55
.
-
문장독해는 날려읽는게 아니라 정확히 부사어, 관형어까지 읽어내는 것 이 문단의...
-
전과해보신분 ? 0 0
그냥 1학기때는 학점만잘 챙겨두면 되나요 ?? 전과하려면 꼭 들어야하는 수업이...
-
임정환쌤 사문 괜찮아요? 11 0
ㅈㄱㄴ
첫번째 댓글의 주인공이 되어보세요.