队列
队列:具有一定操作约束的线性表
只能在一端插入,在另一端删除
队列的顺序存储实现
结构
#define MaxSize <储存数据元素的最大个数>
struct QNode{
ElementType Data[MaxSize];
int rear; //队列头元素
int front; //队列尾元素
};
typedef struct QNode *Queue;
入队列
void AddQ (Queue PtrQ,ElementType item)
{
if( (PtrQ->rear+1)%MaxSize == PtrQ->front ){
printf("队列满");
return;
}
PtrQ->rear = (PtrQ->rear+1)%MaxSize;
PtrQ->Data[PtrQ->rear]=item;
}
出队列
ElementType DeleteQ (Queue PtrQ)
{
if(PtrQ->front == PtrQ->rear){
printf("队列空");
return -1; //-1作为标志数
}
else{
PtrQ->front = (PtrQ->front+1)%MaxSize;
return PtrQ->Data[PtrQ->front];
}
}
队列的链式存储实现
结构
struct Node{
ElementType Data;
struct Node *Next;
};
struct QNode{ //链队列
struct Node *rear; //指向队尾结点
struct Node *front; //指向队头结点
};
typedef struct QNode *Queue;
Queue PtrQ;