Notice
Recent Posts
Recent Comments
Link
취미생활
[C] 엄청 간단한 Queue 구현 본문
최근 코딩테스트를 본 회사에서 참 재밌는 경험을 했다.
코딩테스트를 C로 본 건데
대부분의 자료구조가 구현된 C++ 를 쓸 때와는 달리
자료구조를 내가 구현해야 했기 때문에 조금 귀찮았다.
그렇게 어려운 구현이 필효하진 않았고 Queue 구현 정도?
그러면서 Queue 구현을 C로 해봤는데 생각보다 너무 간단하게 나와서 적어둔다.
#include <stdio.h>
int main(int argc, char **argv){
int q[100] = {0,};
int bot = 0;
int top = 0;
//insert
q[bot] = 1;
bot += 1;
//exception check
if(bot >= 100) bot = 0;
//pop
if(bot == top){
printf("empty!\n");
}
else{
printf("data : %d\n", q[top]);
top += 1;
if(top >= 100) top = 0;
}
return 0;
}
대학교 다니던 시절에는 겉멋에 찌들어 배열 동적할당하고 함수 단위로 push, pop 을 만들었는데
생각해보니까 이게 코딩테스트 할 때 필요한 건데 굳이 그럴 필요가 있나 싶었다.
이전에 어떤 글에서 봤는 지는 모르겠지만
고정 배열로 Circular Queue 로 구현하는 글을 본 적이 있어서
따라서 구현해봤다.
여기서 자료형을 바꾸고 싶으면 배열 선언을 바꿔주면
엄청 간단한 Queue 구현 완성!
Circular Queue 는 1차원 배열의 맨 앞, 뒤를 이어서 둥글게 만든 것처럼 보이게 하는 기술이다.
총으로 보면 리볼버를 생각하면 좋을 듯
아무튼 이걸 사용하면 엄청 간단하게 Queue를 구현할 수 있다.
라이브러리를 사용할 수 없는 코딩테스트에서 쓰기 엄청 간편하고 좋을 듯!
'컴퓨터 > C' 카테고리의 다른 글
[C] Union으로 패킷 데이터 형변환하기 (0) | 2023.08.27 |
---|---|
[C] Double Linked List 구현 (0) | 2023.04.05 |
Comments