//十进制转二进制
#include<bits/stdc++.h>
using namespace std;
#define maxsize 1000
struct Stack{
int *base; //栈底指针
int *top; //栈顶指针
int stacksize; //栈可用的最大容量
};
bool initstack(Stack &s){//构建空战
s.base = new int[maxsize]; //为顺序栈分配一个最大容量为maxsize的数组空间
if(!s.base) exit(-1); //存储分配失败
s.top = s.base; //top初始为base, 空栈
s.stacksize = maxsize; //stacksize置为栈的最大容量maxsize
return 1;
}
bool push(Stack &s, int e){
//插入元素e为新的栈顶指针
if(s.top - s.base >= s.stacksize){//栈满
s.base = (int *)realloc(s.base, (s.stacksize + maxsize) * sizeof(int));
if(!s.base) return 0;
s.top = s.base + s.stacksize;
s.stacksize += maxsize;
}
*s.top++ = e;
return 1;
}
int pop(Stack &s, int &e){
//返回栈顶元素, 不修改栈顶指针
if(s.top != s.base)
e = *--s.top;
else return -1;
}
bool stackempty(Stack &s){
if(s.top == s.base)
return 0;
return 1;
}
int main(){
int a, e;
Stack s;
initstack(s);
scanf("%d", &a);
while(a){
push(s, a%2);
a = a/2;
}
// e = pop(s);
// cout << e;
while(stackempty(s)){
pop(s, e);
cout << e;
}
return 0;
}
用顺序栈实现十进制转二进制
原文作者:进制转换
原文地址: https://blog.csdn.net/ling_wang/article/details/80006923
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/ling_wang/article/details/80006923
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。