큐가 원형으로 구성된 경우에 기본 연산을 구현해 본다.(원형큐구현)
- 최초 등록일
- 2011.02.01
- 최종 저작일
- 2010.01
- C언어
- 가격 1,000원
소개글
3. main 함수는 반드시 아래와 같이 작성한다.
--------------------------------------------------------------------
#include
void main(void) {
char com[10];
int d, q;
while (1) {
scanf("%s", com);
if (strcmp(com, "en") == 0) {
scanf("%d", &d);
if (d <= 0) {
printf("양의 정수만 취급n");
continue;
}
if (q = enqueue(d))
printf(" # value %d is enqueued to Q n", d);
}
else if (strcmp(com, "de") == 0) {
if (q = dequeue( ))
printf(" * value %d is dequeued from Q n", q);
}
else if (strcmp(com, "size") == 0) {
printf(" $ size of Q is %d n", size( ));
}
else if (strcmp(com, "front") == 0) {
printf(" @ front of Q is %dn", front( ));
}
else if (strcmp(com, "quit") == 0) {
break;
}
else
printf(" No legal commandn");
컴파일 실행환경
없음
본문내용
1. 원형 큐는 아래 그림과 같은 형태로, 두 변수 startPos와 endPos 변수로 큐의 두
인덱스를 저장한다. enqueue를 통한 데이터 추가는 항상 endPos의 위치에서 발생하고,
dequeue를 통한 데이터 추출은 startPos에 저장된 값을 리턴함으로써 이루어진다.
2. [10점] 원형큐 Q를 일차원 양의 정수 배열로 (전역변수로) 선언한다. 여기서 Q의
크기는 MaxSize = 12로 정하고, startPos와 endPos도 전역변수로 선언한 후 적절히
초기화 한다.
이제, 다음의 연산을 함수로 구현하여 제출한다.
가. int enqueue( int value )
value 값을 endPos에 저장하고, endPos는 다음 빈 자리를 가르키도록 한 후, value
값을 리턴한다. (단, 빈 자리가 없을 경우는 “Circular Queue is full"이라는 메시지만
출력하고, 0을 리턴.)
나. int dequeue( void )
startPos에 저장된 값을 리턴한다. 그러면 Q에 저장된 값의 개수는 하나 줄어든다.
(단, Q가 비어 있다면, “Circular Queue is empty"를 출력하고, 0을 리턴.)
다. int size( void )
Q에 저장된 값의 개수를 리턴한다.
라. int front( void )
startPos에 저장된 값을 리턴한다. 값을 제거하지는 않는다. value 값을 endPos에 저
장하고, endPos는 다음 빈 자리를 가르키도록 한다. (단, Q가 비어 있다면, “Circular
Queue is empty"라는 메시지를 출력한다
참고 자료
없음