컴공 일기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를 선물하세요.
-
수특 확통 ㅈㄴ더럽네 진짜 0 0
이따구로 생긴게 답인가 싶은게 한두개가 아님 483/128 보고 진심인가 싶었다
-
딮두술 우리가 간절히 이기길 바라는 상대에게 발동되는 딮럼딮렇지의 도술 안된다 진짜 오늘은 안된다
-
[경제] 자작 경제개념 단권화노트 19 22
직접 5시간 동안 만든 경제 개념 정리본입니다 음.. 오류나... 빠진...
-
이야 대단하다 진짜 대단해 0 0
이게 역캐리 뭐 이런건가 픽의 의미가 안보이는데?
-
공통 1틀 미적 3틀인데 미적은 시작한지 한달도 안돼서 아직 안배운거 날리고 29...
-
Cc일까요 …?
-
이거 문제집 제목 뭔가요? 3 0
ㅈㄱㄴ
-
맞팔 구 6 0
ㅈㅂ 해줘요
-
아니 ㅅㅂ 아무리 들어도 8점씩 나가서 3임… 78점 나옴 맨날…. 아무리 해도...
첫번째 댓글의 주인공이 되어보세요.