데이터 구조 (6) 순환 대기 열의 기본 조작 입 대 퇴 대
6361 단어 데이터 구조
4. 567917. 대열 은 다음 과 같은 몇 가지 조작 이 있다. 4. 567918.
void init(PQUEUE);//
void in(PQUEUE);//
void out(PQUEUE,int *);//
void printQueue(PQUEUE);//
bool is_empty(PQUEUE);//
bool is_full(PQUEUE);//
1) 순환 대기 열 초기 화: front = rear = 0; 2) 입단 작업: rear = (rear + 1)% size;3) 파티 작업: front = (front + 1)% size;4) 빈 대기 열 여 부 를 판단 합 니 다: front = rear;5) 대기 열 이 가득 찼 는 지 판단: front = (rear + 1)% size;6) 대기 열의 각 요 소 를 옮 겨 다 닌 다.
#include <stdio.h>
#include <malloc.h>
// ,
typedef struct Queue{
int * base;
int front;//
int rear;//
int len;//
}QUEUE,*PQUEUE;
void init(PQUEUE);//
void in(PQUEUE);//
void out(PQUEUE,int *);//
void printQueue(PQUEUE);//
bool is_empty(PQUEUE);//
bool is_full(PQUEUE);//
int main(void){
QUEUE q;
int val;
init(&q);
in(&q);
in(&q);
in(&q);
printQueue(&q);
out(&q,&val);
printf(" :%d
",val);
printQueue(&q);
return 0;
}
//
void init(PQUEUE pQ){
int len;
printf(" :");
scanf("%d",&len);
pQ->base =(int*)malloc( sizeof(int)*(len+1) );// ,
if(pQ->base == NULL){
printf(" , .");
exit(-1);
}
pQ->front = pQ->rear = 0;
pQ->len = len;
}
// , , ( NULL)
void in(PQUEUE pQ){
if(is_full(pQ)){
printf(" ,
");
return;
}
int val;
printf(" :");
scanf("%d",&val);
pQ->base[pQ->rear] = val;
pQ->rear = (pQ->rear+1)%pQ->len;
}
//
void out(PQUEUE pQ,int * pVal){
if( is_empty(pQ) ){
printf(" ,
");
return;
}
*pVal = pQ->base[pQ->front];
pQ->front = (pQ->front+1)%pQ->len;
}
//
void printQueue(PQUEUE pQ){
if( is_empty(pQ) ){
printf("
");
return;
}
printf(" :");
int t = pQ->front;
while(t != pQ->rear){
printf("%d ",pQ->base[t]);
t = (t+1)%pQ->len;
}
printf("
");
}
//
bool is_empty(PQUEUE pQ){
return pQ->front == pQ->rear;
}
//
bool is_full(PQUEUE pQ){
return (pQ->rear+1)%pQ->len == pQ->front;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.