[데이터 구조의 여행] 순환 대기 열

설명:
    시간 관 계 는 코드 와 주석 만 제시 하고 시간 이 있 을 때 코드 의 실현 절 차 를 자세히 소개 합 니 다.
1. 코드 및 주석
    다음 과 같다.
#include
#include

typedef char ElemType;
typedef struct {
   ElemType  *elem;  //        
   int front;        //     
   int rear;         //     ,           
   int maxSize;      //     
} SqQueue;


#define OVERFLOW -1
#define OK 1
#define ERROR 0    
#define TRUE 2
#define FALSE -2

typedef int Status;

Status InitQueue_Sq(SqQueue &Q, int size) { //        
   Q.elem = (ElemType *)malloc(size*sizeof(ElemType));
   Q.maxSize = size;
   Q.front = Q.rear = 0;
   return OK;
} 


Status QueueEmpty_Sq(SqQueue Q){ //     Q   ,     TRUE,  FALSE
   if(Q.front == Q.rear)
      return TRUE;
   else  
      return FALSE; 
}

Status EnQueue_Sq(SqQueue &Q, ElemType e) {
        //        ,         ,     e         

   if(Q.front == (Q.rear + 1)%Q.maxSize)
       return ERROR;

   Q.elem[Q.rear] = e;
   Q.rear = (Q.rear + 1)%Q.maxSize;
   return OK;
}


Status DeQueue_Sq(SqQueue &Q, ElemType &e) {
        //      ,     Q     ,  e     
   if(Q.front == Q.rear)
      return ERROR; //     
   e = Q.elem[Q.front];
   Q.front = (Q.front+1)%Q.maxSize; // Q.front   1
   return OK;
}

int main(void) {    
    SqQueue Q;
    ElemType e;
    Status result1, result2;
    
    //1.      size 5     Q
    InitQueue_Sq(Q, 5);
    EnQueue_Sq(Q, 'A'); 
    EnQueue_Sq(Q, 'B'); 
    EnQueue_Sq(Q, 'C');    
    EnQueue_Sq(Q, 'D');
    DeQueue_Sq(Q, e);   
    EnQueue_Sq(Q, 'E');  
    DeQueue_Sq(Q, e);   
    EnQueue_Sq(Q, 'F');   //                     ,
                          // “         ”   
    result1 = EnQueue_Sq(Q, 'G');   //  ,   
   
    printf("result1 = %d
", result1);                                                     DeQueue_Sq(Q, e);        DeQueue_Sq(Q, e);        DeQueue_Sq(Q, e);        DeQueue_Sq(Q, e);        result2 = DeQueue_Sq(Q, e);   // ,return FALSE                  printf("result2 = %d
", result2);                                                 }

2. 실행 결과
    다음 과 같다.
result1 = 0
result2 = 0
       . . .

3. 연구 방법
    두 번 째 단 계 는 결 과 를 직접 제시 할 뿐 실제 컴 파일 러 의 정지점 기능 을 이용 하여 모든 단계 의 실행 상황 을 관찰 하고 순환 대기 열 에 대한 이 해 를 강화 할 수 있 으 므 로 시도 해 볼 수 있다.

좋은 웹페이지 즐겨찾기