栈和队列

栈和队列是两种常用的数据结构,对他们的掌握主要在于掌握各种操作
栈:
栈的特点就是后进先出,就好比往一个直径五厘米的只有上端开口的玻璃瓶中依次放入n块序号从1到n的直径五厘米的巧克力。由于只有上端开口,所以当全部放入以后,第一块拿起的一定是最后一块放入的,这就是栈的特征。

#include<stack>//栈的头文件;
stack<int>s;//尖括号内填的是你要存入栈中的变量类型(结构体也可),s为栈名;
s.push();//向栈尾添加元素;
s.pop();//删除栈中最顶端的元素;
s.top();//返回栈中最顶端的元素;
s.size();//返回栈中的元素个数;
s.empty();//bool类型,若栈为空返回1,反之返回0;

队列:
队列的特点是先进先出,就好比一群高素质的中国人在火车站排队买火车票,先排队的人一定先买到,也就先离开。这就是队列的特征。

#include<queue>//队列的头文件;
queue<int>q;//尖括号内填的是你要存入队列中的变量类型(结构体也可),s为栈名;
q.push();//向队尾添加元素;
q.pop();//删除队首元素;
q.front();//返回队首元素;
q.size();//返回队列中的元素个数;
q.empty();//bool类型,若栈为空返回1,反之返回0;

除了以上的队列,还有两种特殊队列,第一个是优先队列,它与普通队列的区别在于当你向队列中添加元素时,他会自动将所有元素按由大到小(或由小到大排序)。

#include<queue>//队列的头文件;
priority_queue <int,vector<int>,less<int> >q;//将元素自动由大到小排列
priority_queue <int> q;//将元素自动由大到小排列
priority_queue <int,vector<int>,greater<int> >q;//将元素自动由小到大排列
q.push();//向队尾添加元素;
q.pop();//删除队首元素;
q.top();//返回队首元素;注意这里是top!!!!!!!
q.back();//返回队尾元素;
q.size();//返回队列中的元素个数;
q.empty();//bool类型,若栈为空返回1,反之返回0;

另一种时双向队列,它的特点是既可以从队尾加入元素,也可以从队首加入元素;既能返回队首元素,也能返回队尾元素;既能从队首删除元素,也能从队尾删除元素。双向队列还有一个优势,就是可以通过clear函数直接清空队列。

#include<deque>//双向队列头文件;
deque<int>dq;//尖括号内填的是你要存入队列中的变量类型(结构体也可),s为栈名;
dq.push_back();//向队尾添加元素;
dq.push_front();//向队首添加元素;
dq.pop_front();//删除队首元素;
dq.pop_back();//删除队尾元素;
dq.front();//返回队首元素;
dq.back();//返回队尾元素;
dq.size();//返回队列中的元素个数;
dq.empty();//bool类型,若栈为空返回1,反之返回0;
de.clear();//清空队列;
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值