C++中栈和队列的基本操作

使用标准库的栈和队列时,先包含相关的头文件

#include<stack>

#include<queue>

定义栈如下:

stack<int> stk;

定义队列如下:

queue<int> q;

栈提供了如下的操作

[cpp]  view plain  copy
  1. s.empty()               如果栈为空返回true,否则返回false    
  2. s.size()                返回栈中元素的个数    
  3. s.pop()                 删除栈顶元素但不返回其值    
  4. s.top()                 返回栈顶的元素,但不删除该元素    
  5. s.push()                在栈顶压入新元素    
队列提供了下面的操作

[cpp]  view plain  copy
  1. q.empty()               如果队列为空返回true,否则返回false    
  2. q.size()                返回队列中元素的个数    
  3. q.pop()                 删除队列首元素但不返回其值    
  4. q.front()               返回队首元素的值,但不删除该元素    
  5. q.push()                在队尾压入新元素    
  6. q.back()                返回队列尾元素的值,但不删除该元素  
以下是C++栈和队列基本操作: 栈的基本操作: 1.创建栈:stack<int> s; 2.入栈:s.push(元素); 3.出栈:s.pop(); 4.取栈顶元素:s.top(); 5.判断栈是否为空:s.empty(); 6.获取栈的大小:s.size(); 队列的基本操作: 1.创建队列:queue<int> q; 2.入队:q.push(元素); 3.出队:q.pop(); 4.取队头元素:q.front(); 5.取队尾元素:q.back(); 6.判断队列是否为空:q.empty(); 7.获取队列的大小:q.size(); 以下是一个使用栈求进制换的例子: ```c++ #include <iostream> #include <stack> using namespace std; int main() { stack<int> s; int num, base; cout << "请输入一个十进制数:"; cin >> num; cout << "请输入要换的进制:"; cin >> base; while (num) { s.push(num % base); num /= base; } cout << "换后的结果为:"; while (!s.empty()) { cout << s.top(); s.pop(); } cout << endl; return 0; } ``` 以下是一个使用队列打印杨辉三角形的例子: ```c++ #include <iostream> #include <queue> using namespace std; int main() { int n; cout << "请输入要打印的行数:"; cin >> n; queue<int> q; q.push(1); for (int i = 1; i <= n; i++) { int pre = 0; for (int j = 0; j < i; j++) { int cur = q.front(); q.pop(); cout << cur - pre << " "; pre = cur; q.push(cur + pre); } q.push(1); cout << endl; } return 0; } ``` 以下是一个使用栈计算后缀表达式的例子: ```c++ #include <iostream> #include <stack> #include <string> using namespace std; int main() { string s; cout << "请输入后缀表达式:"; getline(cin, s); stack<int> nums; for (int i = 0; i < s.size(); i++) { if (s[i] == ' ') continue; if (isdigit(s[i])) { int num = 0; while (i < s.size() && isdigit(s[i])) { num = num * 10 + s[i] - '0'; i++; } nums.push(num); i--; } else { int b = nums.top(); nums.pop(); int a = nums.top(); nums.pop(); switch (s[i]) { case '+': nums.push(a + b); break; case '-': nums.push(a - b); break; case '*': nums.push(a * b); break; case '/': nums.push(a / b); break; } } } cout << "计算结果为:" << nums.top() << endl; return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值