데이터 구조 - 순차 순환 대기 열 (코드 구현)
개념 대열 도 특수 한 선형 표 이다.그러나 선형 표 는 모든 위치 에 삽입 하고 삭제 할 수 있 으 며, 대기 열 은 팀 끝 에 만 삽입 할 수 있 고, 팀 머리 에서 삭제 할 수 있 으 며, 이렇게 하면 선진 적 인 선 출 성 을 가진다.
중점
순서 순환 대기 열의 가짜 넘 침 문 제 는 팀 꼬리 포인터 rear 의 값 과 팀 헤드 front 의 값 이 정 의 된 저장 공간의 최대 값 에서 정 의 된 저장 공간의 최소 값 으로 자동 으로 바 뀌 지 않 기 때문에 발생 합 니 다.
이 문 제 를 해결 하기 위해 서 는 세 가지 방법 이 있 습 니 다. 1 개의 저장 소 를 적 게 사용 할 수 있 습 니 다. 만약 에 하나의 저장 공간 을 적 게 사용 하면 팀 의 꼬리 지침 에 1 과 같은 팀 의 머리 지침 을 추가 하여 대기 열 이 가득 찬 판단 조건 을 선택 할 수 있 습 니 다. 이때 대기 열 이 가득 찬 조건 은 (rear + 1)% Maxsize = = front 대기 열 이 비어 있 는 판단 조건 은 rear = front 입 니 다.(2) 표지 위 치 를 설정 합 니 다.
표지 위 치 를 tag 로 설정 하고 초기 에 tag = 0 을 설정 합 니 다.대기 열 작업 이 성공 할 때마다 tag = 1 을 설정 합 니 다.대기 열 작업 이 성공 할 때마다 tag = 0 을 설정 합 니 다. 이때 대기 열 이 비어 있 는 판단 조건 은 rear = = front & tag = 0 대기 열 이 가득 찬 조건 은 rear = = = front & tag = 1 (3) 카운터 설계 수 기 를 count 로 설정 하고 초기 에는 count = 0 을 설정 합 니 다.대기 열 이 성공 할 때마다 count + +;대기 열 에 성공 할 때마다 count –.이렇게 계수 기 는 계수 기능 을 가지 고 있 을 뿐만 아니 라 표지 위치 와 같은 표지 역할 도 가지 고 있 습 니 다. 이때 대기 열 이 비어 있 는 판단 조건 은 count = = 0 대기 열 이 가득 찬 조건 은 count > 0 & rear = = front 입 니 다.count = Maxsize;코드 추가
#include
#include
#define Maxsize 100
typedef int DataType;
typedef struct //
{
DataType queue[Maxsize];
int rear; //
int front; //
int count; //
}SeqQueue;
void SeqQueueInitiate(SeqCQueue *Q)//
{
Q->rear=0;
Q->front=0;
Q->count=0;
}
int QueueNotEmpty(SeqQueue Q)//
{
if(Q.count!=0)
return 1;
else return 0;
}
int QueueAppend(SeqQueue *Q,DataType x)//
{
if(Q->count >0 && Q->rear ==Q->front)
{
printf(" ");
return 0;
}
else
{
Q->queue[Q->rear]=x;// x
Q->rear=(Q->rear +1)%Maxsize;
Q->count++; // 1
return 1;
}
}
int QueueDelete(SeqQueue *Q,DataType *d)//
{
if(Q->count ==0)
{
printf("
");
return 0;
}
else
{
*d=Q->queue[Q->front];// d
Q->front=(Q->front+1)%Maxsize; //
Q->count--;
return 1;
}
}
int QueueGet(SeqQueue Q,DataType *d)//
{
if(Q.count ==0)
{
printf(" !
");
return 0;
}
else
{
*d=Q.queue[Q.front];
return 1;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.