数据结构:[队列] 详解

@[TOC](队列详解)
# 队列特点

队列是一种常见的数据结构,特点是先进先出

举个例子:在排队做核酸时,这时就是一个队列,先到的先做,后来的后做

20160509165022899 (231×296)

 

## 队列实现方法

        队列一般用STL中的queue(单向队列)、deque(双向队列)、数组、链表(链表较为复杂,使用时容易出错,这里暂时不讲

## 第一种:queue

queue使用时需调用⬇头文件

 然后在适当的位置进行创建

格式:queue <数据类型(int、struct、char……)> 队列名称;

举个例子:

创建一个int类型的单向队列:

创建之后就该使用了 

以下是本蒟蒻目前知道的:

q.push(value);//因为是单向队列,所以加入时只能在队尾加入 
q.pop();//删除元素,注意括号里不填元素,直接将队首元素pop
q.empty();//判断队列是否为空,注意为空时返回true,有元素时返回false
q.size();//返回目前队列中元素的数量
q.back();//返回目前队列的队尾元素 

        欢迎各位大佬补充~ 

## deque

deque和queue差不多,只是deque队头和队尾都能加入元素和删除元素

禁止插队!!

需要的头文件:

# include <deque>

使用方法:

 

​
q.push_back(value);//从队尾插入元素
q.push_front(value);//从队首插入元素 插队行为(bushi
q.pop_back();//将队尾元素删除
q.pop_front();//将队首元素删除
q.clear();//清除队列元素
q.front();//返回队列顶部元素
q.back();//返回队列底部元素
q.empty();//和queue效果一样
q.emplace(place);//在指定位置插入元素 也是插队(bushi 

​              
## 数组实现

数组实现时,需要用到一个数组,一个head变量,一个tail变量

插入时,没有了push的操作

数组实现时插入元素方法:

int a[101],head=1,tail=1;
int t;
cin>>t;
a[tail]=t;
tail++;

删除元素时:

直接head++,将队首元素覆盖掉

12345
headhead++                tail

++后1这个元素就被抹掉了

数组实现时empty的操作方法:

 

if (tail>head){
	return false;//没有空队列 
}else if (tail<=head){
	return true;//队列为空 
}

 

clear操作:

tail=head;
1234
head(tail新位置)tail

总结:

        使用队列时,建议使用queue和deque,数组这个方法也可以使用,但不建议

制作不易,点个赞吧~ 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值