컴공 일기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를 선물하세요.
-
취해서 토해본적은 없네요 10 1
한병이면 취하는데 소주 두병까지 마셔봤는데 토는 안해봤어요
-
빡공시작 0 0
적백이햄해야지 ㅇㅇ
-
연대 송도 기숙사 12 1
기숙사 룸메끼리는 그냥 갠플함? 서로 과도 다 다르다는데 보통 관심 없나 서로
-
고대 새미터 후기 3 0
어우 허리가 넘 아픔 응원 체험 했더니ㅋㅋ
-
종로학원이 그렇개 별로임?? 10 4
지금 하이퍼에서 수업듣는쌤이 목동종로 의대반 수학쌤이셨다는데 수업도 깔끔하고 관리도...
-
사차원주머니vs타임머신(1회용) 13 0
타임머신탔을때 과거의자신이 존재할수있음 물론 미래로가는거도 ㄱㄴ
-
서울대하방은 어딜까 9 0
상우형인가
첫번째 댓글의 주인공이 되어보세요.