컴공 일기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를 선물하세요.
-
제가 일반고 내신2.2에 학종으로 전기전자공학 생각하고있는데 제 전공과 관련있는...
-
오르새 커리 1 0
미적 개센스n 기출50선 병행하려는데 어떰?
-
그러니까 강사 고를때 0 1
이 느낌 드는 강사 고르라는거져?
-
나라같은건 자연스럽게 외워지고 다른개념도 이해하면 됨 그리고 문제 풀다보면 좀...
-
활기가 돌았겠어요?
-
아니 난 공통 무조건 쉬울 거라 생각하고 공부하는 게 68 38
진짜 이해가 안 됨 이번 6평도 결국 15 22는 어려웠고, 이미 수능에서 통수당한...
첫번째 댓글의 주인공이 되어보세요.