C++——队列(queue)和栈(stack)
1. 队列(queue)队列是一种先进先出(First in First out,FIFO)的数据类型。每次元素的入队都只能添加到队列尾部,出队时从队列头部开始出。C++中,使用队列需要包含头文件<queue>。C++中队列的基本操作如下:push() :入队。在队列尾端添加一个元素,无返回值;pop() :出队。将队列头部元素删除(出队),无返回值;front() :获得队列头部元素
·
目录
1. 队列(queue)
队列是一种先进先出(First in First out,FIFO)的数据类型。每次元素的入队都只能添加到队列尾部,出队时从队列头部开始出。C++中,使用队列需要包含头文件<queue>。C++中队列的基本操作如下:
- push() :入队。在队列尾端添加一个元素,无返回值;
- pop() :出队。将队列头部元素删除(出队),无返回值;
- front() :获得队列头部元素。此函数返回值为队列的头部元素,常与pop()函数一起,先通过front()获得队列头部元素,然后将其从队列中删除;
- size() :获得队列大小。此函数返回队列的大小,返回值是“size_t”类型的数据,“size_t”是“unsigned int”的别名。
- empty() :判断队列是否为空。此函数返回队列是否为空,返回值是bool类型。队列空:返回true;不空:返回false。
- 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++中栈的基本操作如下:
- push() :入栈。在栈顶添加一个元素,无返回值;
- pop() :出栈。将栈顶元素删除(出队),无返回值;
- top() :获得栈顶元素。此函数返回值为栈顶元素,常与pop()函数一起,先通过top()获得栈顶元素,然后将其从栈中删除;
- size() :获得栈大小。此函数返回栈的大小,返回值也是“size_t”类型的数据,“size_t”是“unsigned int”的别名。
- 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;
}
上面代码的输出如下:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)