C++——队列(queue)和栈(stack)

目录

 

1. 队列(queue)

2. 栈(stack)


1. 队列(queue)

队列是一种先进先出(First in First out,FIFO)的数据类型。每次元素的入队都只能添加到队列尾部出队时从队列头部开始出。C++中,使用队列需要包含头文件<queue>。C++中队列的基本操作如下:

  1. push() :入队。在队列尾端添加一个元素,无返回值;
  2. pop() :出队。将队列头部元素删除(出队),无返回值;
  3. front() :获得队列头部元素。此函数返回值为队列的头部元素,常与pop()函数一起,先通过front()获得队列头部元素,然后将其从队列中删除;
  4. size() :获得队列大小。此函数返回队列的大小,返回值是“size_t”类型的数据,“size_t”是“unsigned int”的别名。
  5. empty() :判断队列是否为空。此函数返回队列是否为空,返回值是bool类型。队列空:返回true;不空:返回false。
  6. back() :返回队列尾部元素,就是队列中最后一个进去的元素。

下面是一个示例:

#include <iostream>
#include <queue>//使用队列需要引用<queue>头文件
using namespace std;

int main(void) {
	queue<int> q;
	q.push(1);		//将1入队
	cout << "将1入队后队列的首元素: " << q.front() << endl;	//输出队列头部元素,就是1
	q.push(2);		//将2入队
	cout << "将2入队后队列的首元素: " << q.front() << endl;	//输出队列头部元素,还是1
	cout << "此时队列的尾部元素: " << q.back() << endl;	//输出队列中尾部元素,就是2
	q.pop();			//将队列头部的元素删除(删除1),无返回值
	cout << "删除队列头部元素后,新队列的头部元素 " << q.front() << endl;	//此时队列中只有2,因此输出2
	cout << "队列是否为空(0:非空;1:空): " << q.empty() << endl;	//empty()返回bool值,表示队列是否为空,此时不为空,返回0
	q.pop();			//将队列头部的元素删除(删除2,此时队列空),无返回值
	cout << "又删除了一个元素2,现在队列是否为空(0:非空;1:空): " << q.empty() << endl;	//empty()返回bool值,表示队列是否为空,此时队列为空,返回1
	cout << "此时队列的大小: " << q.size() << endl;	//返回队列的大小,此时队列大小为0,输出0

	return 0;
}

上面代码的输出如下:

2. 栈(stack)

栈是一种后进先出(Last in First out,LIFO)的数据类型。每次元素入栈时只能添加到栈顶出栈时只能从栈顶元素出栈。C++中,使用栈需要包含头文件<stack>。C++中栈的基本操作如下:

  1. push() :入栈。在栈顶添加一个元素,无返回值;
  2. pop() :出栈。将栈顶元素删除(出队),无返回值;
  3. top() :获得栈顶元素。此函数返回值为栈顶元素,常与pop()函数一起,先通过top()获得栈顶元素,然后将其从栈中删除;
  4. size() :获得栈大小。此函数返回栈的大小,返回值也是“size_t”类型的数据,“size_t”是“unsigned int”的别名。
  5. empty() :判断栈是否为空。此函数返回栈是否为空,返回值是bool类型。栈空:返回true;不空:返回false。

下面是一个示例:

#include <iostream>
#include <stack>
using namespace std;

int main(void) {
	stack<int> q;
	q.push(1);		//将1入栈
	cout << "将1入栈后,输出栈顶部元素: " << q.top() << endl;	//输出栈顶部元素,就是1
	q.push(2);		//将2入栈
	cout << "将2入栈后,输出栈顶部元素: " << q.top() << endl;	//输出栈顶部元素,还是1
	q.pop();			//将栈顶部的元素删除(删除1),无返回值
	cout << "删除栈顶元素后,栈的头部元素: " << q.top() << endl;	//此时栈中只有2,因此输出2
	cout << "栈是否为空(0:非空;1:空): " << q.empty() << endl;	//empty()返回bool值,表示栈是否为空,此时不为空,返回0
	q.pop();			//将栈顶部的元素删除(删除2,此时栈空),无返回值
	cout << "又删除了一个元素2,现在栈是否为空(0:非空;1:空): " << q.empty() << endl;	//empty()返回bool值,表示栈是否为空,此时栈为空,返回1
	cout << "此时栈的大小: " << q.size() << endl;	//返回栈的大小,此时栈大小为0,输出0

	return 0;
}

上面代码的输出如下:

 

 

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值