2. 循环队列
队列的基本操作
循环队列
循环队列的类型定义:
#define MAXSIZE 50 /*队列的最大长度*/
typedef struct
{
QueueElementType element[MAXSIZE]; /* 队列的元素空间*/
int front; /*头指针指示器*/
int rear ; /*尾指针指示器*/
}SeqQueue;
(1) 初始化操作。
void InitQueue(SeqQueue *Q)
{ /* 将*Q初始化为一个空的循环队列*/
Q->front=Q->rear=0;
}
(2) 入队操作。
int EnterQueue(SeqQueue *Q, QueueElementType x)
{ /*将元素x入队*/
if((Q->rear+1)%MAXSIZE==Q->front) /*队列已经满了*/
return(FALSE);
Q->element[Q->rear]=x;
Q->rear=(Q->rear+1)%MAXSIZE; /* 重新设置队尾指针*/
return(TRUE); /*操作成功*/
}
(3) 出队操作。
int DeleteQueue(SeqQueue *Q, QueueElementType *x)
{ /*删除队列的队头元素, 用x返回其值*/
if(Q->front==Q->rear) /*队列为空*/
return(FALSE);
*x=Q->element[Q->front];
Q->front=(Q->front+1)%MAXSIZE; /*重新设置队头指针*/
return(TRUE); /*操作成功*/
}
1. 打印杨辉三角
杨辉三角形
杨辉三角形元素入队顺序
(1) 第7行的第一个元素1入队。
element[rear]=1;
rear=(rear +1 )% MAXSIZE;
(2) 循环做以下操作, 产生第7行的中间5个元素并入队。
element[rear]=element[front]+element[(front+1) %MAXSIZE];
rear=(rear +1 )% MAXSIZE;
front=(front+1)%MAXSIZE;
(3) 第6行的最后一个元素1出队。
front=(front+1)%MAXSIZE;
(4) 第7行的最后一个元素1入队。
element[rear]=1;
rear=(rear +1 )% MAXSIZE;
循环队列 来自淘豆网www.taodocs.com转载请标明出处.