栈
1、STL中的stack头文件自带函数
- empty()堆栈是否为空
- push()压入元素
- pop()弹出元素(并不会返回顶部元素,pop之前先判断!empty())
- size()(返回栈的元素个数)
- top()(返回栈顶元素)
- 声明:stack<元素类型> 堆栈名
- 复制:stack c1(c2) 代表将c2复制到c1
2、数制转换
输入格式
输入一个十进制数N与需要转换的进制d
输出格式
输出转换后的d进制数
思路分析
转换进制其实就是用短除法不停地除以d求余数,直到剩下的N比d小为止,倒着把余数从左到右写一遍的过程。因为这个“倒着取余数”的操作,让我们想到可以将计算过程在栈中顺序进行,然后弹出顺序就是倒序。
代码实现
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stack>
using namespace std;
char ch[]={
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int n,d;
stack<int> s;
int main(){
scanf("%d%d",&n,&d);
while(n){
s.push(n%d);
n=n/d;
}
while(!s.empty()) {
printf("%c",ch[s.top()]); s.pop();
}
return 0;
}
回顾反思
top并不会弹出栈顶元素