栈和队列的基本操作c++
时间: 2024-06-13 16:09:29 浏览: 123
以下是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;
}
```
阅读全文