데이터 구조 순환 대기 열의 실현
2661 단어 알고리즘 과 데이터 구조
순서 대기 열의 실현 으로 인해 가짜 넘 침 이 발생 할 수 있 습 니 다. 여기 서 순환 대기 열 을 도입 합 니 다. 물론, 여기 서 데이터 가 대기 열 에 있 는 최대 규 모 를 알 아야 합 니 다. 그렇지 않 으 면 순환 대기 열 이 느 린 후에 확장 하려 면 매우 번 거 로 워 집 니 다!
요청:
실험 7. 순환 대기 열의 각종 기본 연산 을 실현 하 는 알고리즘
1 실험 목적
이 실험 은 순환 대열 의 각종 기본 연산 을 실현 하고 이 실험 을 통 해 선형 구조의 대열 의 특징 을 더욱 깊이 이해 해 야 한다.
2 실험 내용
순환 대기 열의 각종 기본 연산 을 실현 하고 이 를 바탕 으로 메 인 프로그램 을 설계 하여 다음 과 같은 기능 을 완성 합 니 다.
(1) 대기 열 초기 화
(2) 대기 열 이 비어 있 는 지 여 부 를 판단 합 니 다.
(3) 순서대로 팀 에 들 어 가 는 요 소 는 학 번 분해 후의 숫자 이다. 예 를 들 어 학 번 이 20161100 이면 팀 에 들 어 가 는 요 소 는 숫자 이다. 2, 0, 1, 6, 1, 1, 0, 0 이다.
(4) 하나의 요 소 를 출력 하여 이 요 소 를 출력 합 니 다.
(5) 순서대로 입장 원소 9, 8, 7
(6) 모든 요 소 를 정렬 하고 출력 정렬
(7) 방출 대기 열
구체 적 인 코드 는 다음 과 같다.
#include
#include
//****** ******
#define OK 1
#define NO 0
#define QUEUE_MAX_SIZE 20
//****** ******
typedef int Status;
typedef char ElemType;
//****** ******
typedef struct node
{
ElemType *book;
int front;
int rear;
int QueSize;
}SqQueue,*QueuePoint;
QueuePoint InitQueue()
{
QueuePoint p=(QueuePoint)malloc(sizeof(SqQueue));
if(p==NULL)
{
printf(" !
");
return p;
}
p->book=(ElemType *)malloc(QUEUE_MAX_SIZE*sizeof(ElemType));
p->front=p->rear=0;
p->QueSize=QUEUE_MAX_SIZE;
if(p->book == NULL)
printf(" !
");
return p;
}
Status QueueEmpty(QueuePoint Head)
{
if(Head->front == Head->rear)
return OK;
return NO;
}
Status QueuePush(QueuePoint Head,ElemType ch)
{
if((Head->rear+1)%Head->QueSize == Head->front)
{
// printf("
, , !
");
return NO;
}
Head->book[Head->rear]=ch;
Head->rear=(Head->rear+1)%Head->QueSize;
return OK;
}
Status QueuePop(QueuePoint Head,ElemType *ch)
{
if(Head->front == Head->rear)
{
// printf("
, !
");
return NO;
}
*ch=Head->book[Head->front];
Head->front=(Head->front+1)%Head->QueSize;
return OK;
}
int main()
{
QueuePoint Head;
ElemType ch;
Head=InitQueue();
printf("%s
",QueueEmpty(Head)?" !":" !");
while((ch=getchar())!='
')
QueuePush(Head,ch);
QueuePop(Head,&ch);
printf("%c
",ch);
while((ch=getchar())!='
')
QueuePush(Head,ch);
while(QueuePop(Head,&ch))
printf("%c",ch);
free(Head->book);
free(Head);
printf("
!
");
return 0;
}
요약:
순환 대기 열 은 대기 열 길이 에 대한 계산 과 공식 추리 Length = (Q. rear - Q. front + Q. MaxSize)% Q. MaxSize 를 파악 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
데이터 구조의 링크 의 실현글 목록 소개 실현 1. 프로필 동적 배열, 스 택 과 대열 의 바 텀 은 모두 정적 배열 에 의존 하고 resize 로 고정 용량 문 제 를 해결한다.그리고 링크 는 진정한 동적 데이터 구조 이다 2. 실현...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.