mun9769   3년 전

queue이긴 하지만 따지고보면 queue 구조체에 배열이 있는 구조입니다

dequeue함수를 보면 O(n)으로 시간이 오래 걸리는듯 싶습니다.

배열이 아닌 Node struct를 만들면 더 빠를까요?

nahwasa   3년 전

넹 dequeue 때문입니다.

뭐 이 구조에서 크게 바꾸지 않고 한다면,

빼는건 낮은 인덱스부터, 넣는건 높은 인덱스쪽에.. 이런 개념으로 하신다면

구조체에 s,e 정도 두시고(처음엔 둘다 0) 대강 아래와 같이 하시면 되지 않나 싶습니다. (대강한거라 다듬으셔야겟으나, 뭘 말하려는진 아실꺼라 생각합니다.)

void Enqueue(ArrayIntQueue *a, int x)
{
	if(a->e >= a->max) return -1;
	a->que[a->e++] = x;

}

int Dequeue(ArrayIntQueue *a)
{
	if(a->s > a->e) return -1;
	return a->que[a->s++];
}

댓글을 작성하려면 로그인해야 합니다.