넹 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++]; }
mun9769 3년 전
queue이긴 하지만 따지고보면 queue 구조체에 배열이 있는 구조입니다
dequeue함수를 보면 O(n)으로 시간이 오래 걸리는듯 싶습니다.
배열이 아닌 Node struct를 만들면 더 빠를까요?