[데이터 구조의 여행] 순환 대기 열
2387 단어 데이터 구조순환 대기 열데이터 구조 와 알고리즘
시간 관 계 는 코드 와 주석 만 제시 하고 시간 이 있 을 때 코드 의 실현 절 차 를 자세히 소개 합 니 다.
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. 연구 방법
두 번 째 단 계 는 결 과 를 직접 제시 할 뿐 실제 컴 파일 러 의 정지점 기능 을 이용 하여 모든 단계 의 실행 상황 을 관찰 하고 순환 대기 열 에 대한 이 해 를 강화 할 수 있 으 므 로 시도 해 볼 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.