目录
一.队列的认识
队列和栈一样是一种操作受到了限制先进先出(FIFO)的线性表,一端进行插入一端删除
如上图 ,队列就像在超市买菜付款排队,先来的人就先买到菜,后来的人后买到菜;队列在队尾进行插入,队头进行删除;由于队列的插入和删除操作分别是在各自的一端进行的,每个元素必然按照进入的次序出队,所以又把队列称为先进先出表FIFO(First In First Out)
队列:队列是一种只允许在表的一端插入,在另一端删除的存取受限的线性表。
概念:
队尾rear:插入端,线性表的表尾。
队头front:删除端,线性表的表头。
二.队列的实现与操作
定义一个队列
int queue[MAXN];//定义一个队列queue,MAXN为队列的最大长度
int tail,head;//head为头指针,tail为尾指针
操作一:往队列中加入一个元素
void push(int x){//往队列中加入一个元素
queue[++tail]=x;
}
操作二:删除队头元素
void pop(){//删除队头元素
head++;
}
操作三:查询队头元素
int front(){//查询队头元素
return queue[tail];
}
操作四:查询队尾元素
int back(){//查询队尾元素
return queue[tail];
}
操作五:查询队列内元素个数
int size(){//查询队列内元素个数
return tail-head+1;
}
操作六:查询队列是否为空
bool empty(){//查询队列是否为空
return head==tail?1:0;
}
三.STL中的栈和队列
定义一个队列
queue<int> q;//定义int类型的队列q
操作一:往队列中加入一个元素
q.push(x);//往队列中加入一个元素
操作二:删除队头元素
q.pop();//删除队头元素
操作三:查询队头元素
q.front()//查询队头元素
操作四:查询队尾元素
q.back();//查询队尾元素
操作五:查询队列内元素个数
q.size()//查询队列内元素个数
操作六:查询队列是否为空
q.empty();//查询队列是否为空