취미생활

[C] 엄청 간단한 Queue 구현 본문

컴퓨터/C

[C] 엄청 간단한 Queue 구현

달다달아 2023. 6. 10. 17:53

최근 코딩테스트를 본 회사에서 참 재밌는 경험을 했다.

코딩테스트를 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