一、栈
因为有stl,所以就不写代码了嘿嘿
n个数出栈的全部可能:卡特兰数,
计算后缀表达式的值:
二、队列
循环队列: 采用一组地址连续的存储单元,将整个队列的存储单元首尾相连
front指向队首,rear指向队尾的后一个。队满情况:可以发现少占用一个空间
队满条件:(rear+1)%MAXQSIZE=front
十进制转换为R进制:
#include <iostream>
#include <stack>
#include <queue>
#include <cmath>
using namespace std;
int main() {
double a,m;
int n, k, t;
stack<char> s;
cin >> a >> k; //输入数字、k进制
n = floor(a); //
while (n) {
if (k>10 && n%k>=10) s.push('A' + n % k - 10);
else s.push('0' + n % k);
n/=k;
}
while (!s.empty()) {
cout << s.top();
s.pop();
}
queue <int> q;
m = a - floor(a); //小数部分
while (m - floor(m) != 0) {
q.push(floor(m * k));
m *= k;
}
cout << ".";
int cnt = 0;
while (!q.empty()) {
cout << q.front();
q.pop();
cnt++;
if (cnt == 3)
break; //有些进制转换是无穷的小数,防止死循环,最多输出三位小数即可
}
while(cnt<3)cout<<0,cnt++;
return 0;
}