순환 대기 열 에 있 는 요 소 를 배열 Q [m] 로 저장 하고 표지 tag 를 설정 합 니 다. tag = 0 과 tag = 1 로 팀 헤드 포인터 (front) 와 팀 꼬리 포인터 (rear) 가 같 을 때 대기 열 상 태 는 '빈' 인지 '만' 인지 구별 합 니 다.
1715 단어 데이터 구조 와 알고리즘
/* -
* 85 3.7
* : Q[m] , tag, tag=0 tag=1 (front) (rear) ,
* " " " "。
* (enqueue) (dequeue) 。
* :VC 6.0
*/
#include
#include
#define OK 1
#define ERROR 0
#define overflow -1
#define MAXSIZE 10
typedef int qelemType;
int count=0;
typedef struct
{
qelemType q[MAXSIZE];
int tag;
int head,rear;
}sqqueue;
void initQueue(sqqueue &queue)//
{
queue.head=0;
queue.rear=0;
queue.tag=0;
}
int enqueue(sqqueue &queue,qelemType e)
{
if(count==MAXSIZE)
queue.tag=1;
if(queue.tag==1 && queue.head==queue.rear)//
return ERROR;
else
{
queue.q[queue.rear]=e;
queue.rear=(queue.rear+1)%MAXSIZE;
count++;
}
return OK;
}
int dequeue(sqqueue &queue,qelemType &e)
{
if(count==0)
queue.tag=0;
if(queue.tag==0 && queue.head==queue.rear)
return ERROR;
else
{
e=queue.q[queue.head];
queue.head=(queue.head+1)%MAXSIZE;
count--;
}
return OK;
}
int queuelen(sqqueue queue)
{
return (queue.rear-queue.head+MAXSIZE)%MAXSIZE;
}
int main()
{
sqqueue queue1;
initQueue(queue1);
int num;
for(int i=12;i>=1;i--)
{
printf("ATTENTION---Queue's length=%d,",queuelen(queue1));
if(enqueue(queue1,i))
printf(" %d!
",i);
else
{
printf(" !
");
break;
}
}
printf("
");
for(int k=1;k<=14;k++)
{
printf("ATTENTION---Queue's length=%d,",queuelen(queue1));
if(dequeue(queue1,num))
printf(" %d!
",num);
else
{
printf(" !
");
break;
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JAVA] 배열 회전 출력요소 가 출력 을 시작 하 는 위치 에 주의 하 십시오. 모두 몇 라운드 의 수출 이 있 습 니까? n/2 + 1 매 라 운 드 는 상, 우, 하, 좌 로 나 뉜 다. 각 방향의 시작 위치 와 좌표 의 관 계 를 구...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.