栈和队列简单介绍

1 栈

1.1介绍

栈是一种类似桶的数据结构,因为最先进入栈的元素像被压在桶底的物品一样,只有拿掉在其之后放入的物品,才能将其取出(FILO

严格来讲就是进栈、退栈
在这里插入图片描述

1.2 函数库

栈的标准库叫stack

1.2.1 声明方式
	stack</*元素类型*/int> /*栈名*/sta;
	stack<int> tmp;
1.2.2 操作函数
  1. empty()
    返回本栈是否为空
	bool n=/*栈名*/sta.empty();
	bool tmpn=tmp.empty();
  1. size()
    返回栈中的元素集合长度
	int n=/*栈名*/sta.size();
	int tmpn=tmp.size();
  1. top()
    返回栈顶元素
	int n=/*栈名*/sta.top();
	int tmpn=tmp.top();
  1. push()
    将某元素插入栈顶
	/*栈名*/sta.push(n);
	tmp.push(tmpn);
  1. emplace()
    栈顶增加一个元素
	/*栈名*/sta.emplace(n);
	tmp.emplace(tmpn);
  1. pop()
    栈顶元素出栈
	/*栈名*/sta.pop();
	tmp.pop();
  1. swap()
    交换两个栈的元素
	/*栈名*/sta.swap(/*栈名*/tmp);
	tmp.swap(sta);

2 队列

2.1 介绍

队列是一种类似管道的数据结构,因为最先进入队列的元素像在管道中物品一样,第几个进去,就是第几个出来,先进去的先出来(FIFO

也就是入队和出队在这里插入图片描述

2.2 函数库

队列的标准库是queue

2.2.1 声明方式
	queue</*元素类型*/int> /*队名*/que;
	queue<int> tmp;
2.2.2 操作函数
  1. empty()
    返回本队是否为空
	bool n=/*队名*/que.empty();
	bool tmpn=tmp.empty();
  1. size()
    返回队中的元素集合长度
	int n=/*队名*/que.size();
	int tmpn=tmp.size();
  1. front()
    返回队首元素
	int n=/*队名*/que.front();
	int tmpn=tmp.front();
  1. back()
    返回队尾元素
	int n=/*队名*/que.front();
	int tmpn=tmp.front();
  1. push()
    将某元素插入队尾
	/*队名*/que.push(n);
	tmp.push(tmpn);
  1. emplace()
    队尾增加一个元素
	/*队名*/que.emplace(n);
	tmp.emplace(tmpn);
  1. pop()
    队首元素出队
	/*队名*/.pop();
	tmp.pop();
  1. swap()
    交换两个队列的元素
	/*队名*/que.swap(/*队名*/tmp);
	tmp.swap(que);

2.3 优先队列

简单来说,优先对列就是在向该队队尾插入元素后进行一次堆排序,因此耗时较小。

2.3.1 声明方式
  1. 降序队列(大顶堆)
  • 第一种 (只加queue)
priorty_queue</*元素类型*/int> /*队名*/que;
priorty_queue<int> tmp;
  • 第二种 (加queue和vector)
priorty_queue</*元素类型*/int, /*底层容器*/vector</*元素类型*/int>, /*排序规则*/less</*元素类型*/int> > /*队名*/que;
priorty_queue<int, vector<int>, less<int> > tmp;
  1. 升序队列(小顶堆)
  • 必须加queue和vector
priorty_queue</*元素类型*/int, /*底层容器*/vector</*元素类型*/int>, /*排序规则*/greater</*元素类型*/int> > /*队名*/que;
priorty_queue<int, vector<int>, greater<int> > tmp;
2.3.2 操作函数与栈相似
  1. empty()
    返回本队是否为空
	bool n=/*队名*/que.empty();
	bool tmpn=tmp.empty();
  1. size()
    返回队中的元素集合长度
	int n=/*队名*/que.size();
	int tmpn=tmp.size();
  1. top()
    返回队首元素
	int n=/*队名*/que.top();
	int tmpn=tmp.top();
  1. push()
    将某元素插入队首
	/*队名*/que.push(n);
	tmp.push(tmpn);
  1. emplace()
    队尾增加一个元素
	/*队名*/que.emplace(n);
	tmp.emplace(tmpn);
  1. pop()
    队首元素出队
	/*队名*/que.pop();
	tmp.pop();
  1. swap()
    交换两个队的元素
	/*队名*/que.swap(/*队名*/tmp);
	tmp.swap(que);
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值