【算法分析】
为了学习栈的性质,本文给出了利用栈实现十进制转为二进制的代码。
关于栈的代码实现,可参见:https://blog.csdn.net/hnjzsyjyj/article/details/130522133
而将十进制转换为任意进制的算法代码,可参见:https://blog.csdn.net/hnjzsyjyj/article/details/112596698
【利用STL stack实现十进制转二进制的算法代码】
#include <bits/stdc++.h>
using namespace std;
int main() {
int x;
cin>>x;
stack<int> s;
while(x) {
s.push(x%2);
x=x/2;
}
while(!s.empty()) {
cout<<s.top();
s.pop();
}
return 0;
}
/*
in:11
out:1011
*/
【top初始取-1时,用数组模拟栈实现十进制转二进制的算法代码】
#include <bits/stdc++.h>
using namespace std;
const int maxn=105;
int s[maxn];
int top=-1;
int main() {
int x;
cin>>x;
while(x) {
s[++top]=x%2;
x=x/2;
}
while(top!=-1) {
cout<<s[top];
top--;
}
return 0;
}
/*
in:11
out:1011
*/
【top初始取0时,用数组模拟栈实现十进制转二进制的算法代码】
#include <bits/stdc++.h>
using namespace std;
const int maxn=105;
int s[maxn];
int top=0;
int main() {
int x;
cin>>x;
while(x) {
s[++top]=x%2;
x=x/2;
}
while(top!=0) {
cout<<s[top];
top--;
}
return 0;
}
/*
in:11
out:1011
*/
【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/112596698
https://blog.csdn.net/hnjzsyjyj/article/details/130522133