01 队列的基本概念
队列是只允许在一端插入,另一端删除的线性表。
FIFO先进先出是队列的特性。
01 顺序队列
#define MaxSize 10
typedef struct {
ElemType data[MaxSize];
int front,rear;
}SqQueue;
void InitQueue(SqQueue &Q) {
// 初始时 队头、队尾指针指向0
Q.rear = Q.front = 0;
}
bool QueueEmpty(SqQueue Q) {
return Q.rear == Q.front;
}
bool Enqueue(SqQueue &Q,ElemType x) {
if((Q.rear + 1) %MaxSize == Q.front)
return false;
Q.data[Q.rear] = x;
Q.rear=(Q.rear+1)%MaxSize; // 队尾指针+1取模
return true;
}
bool Dequeue(SqQueue &Q,ElemType &x) {
if(Q.rear == Q.front)
return false;
x = Q.data[Q.front];
Q.front = (Q.front + 1) % MaxSize;
return true;
}
bool GetHead(SqQueue &Q,ElemType &x) {
if(Q.rear == Q.front)
return false;
x = Q.data[Q.front];
return true;
}
方案二
#define MaxSize 10
typedef struct {
ElemType data[MaxSize];
int front,rear;
int size;
}SqQueue;
网友评论