队列是一种操作受限制的线性表,限制仅仅允许在表的一端插入,另一端删除
队尾:可以插入的一端
队头:可进行删除的一端
记忆:队列就像一列在隧道里的高铁
顺序队列的定义
#include<stdio.h> #include<stdlib.h> #define maxsize 100 typedef struct { int data[maxsize]; int front;//队首 int rear;//队尾 }sqQueue;
知识点:
队空时条件front=(front+1)%maxsize
初始化队列
void initqueue(sqQueue &qu) { qu.front=qu.rear=0; }
判断队空
int isqueueempty(sqQueue qu) { if(qu.front==qu.rear) return 1; else return 0; }
进队
int enqueue(sqQueue &qu,int x) { if((qu.rear+1)%maxsize==qu.front) return 1; qu.rear=(qu.rear+1)%maxsize;//队列未满先移动指针 qu.data[qu.rear]=x;//存入元素 return 1; }
出队
int dequeue(sqQueue &qu,int &x) { if(qu.front==qu.rear) return 0;//队列空不出 qu.front=(qu.front+1)%maxsize; x=qu.data[qu.front]; return 1; }