//和栈相反,队列(Queue)是一种先进先出(FIFO)的线性表
当然也可以采用动态分配存储空间,
循环队列顺序存储结构
<span style="font-size:14px;">#define MAXQSIZE 100//最大队列长度 typedef struct{ QElemType Data[MAXQSIZE]; int front; int rear; }SqQueue;</span>
<span style="font-size:14px;">void QueueInit(SqQueue &Q) { Q.front = 0; Q.rear = 0; } </span>
<span style="font-size:14px;">void AddQueue(SqQueue &Q,QElemType elem) { if((Q.rear + 1) % MAXQSIZE == Q.front)//判断队列满否 { //perrer("AddQueue"); return ; } Q.rear = (Q.rear + 1) % MAXQSIZE; Q.Data[Q.rear] = elem; return; }</span>
//——————————————————————————————————————————————————————————————<span style="font-size:14px;">void DeleteQueue(SqQueue &Q,QElemType &elem) { if(Q.front == Q.rear)//判断队列是否为空 //perrer(DeleteQueue return; elem = Q.Data[Q.front]; Q.front = (Q.front + 1) % MAXQSIZE; }</span>
当然也可以采用动态分配存储空间,
<span style="font-size:14px;">typedef struct{ QElemType *base; int front; int rear; }SqQueue; void QueueInit(SqQueue &Q) { Q.base = (QElemType *)malloc(MAXQSIZE * sizseof(QElemType)); Q.front = 0; Q.rear = 0; } </span>