#include<iostream>
#include<stdlib.h>
const length=20;
using namespace std;
typedef struct
{
int *base;
int *top;
int size;
}sqstack;
int initstack(sqstack &s ,int len)
{
s.base=(int *)malloc(len*sizeof(int));
if(!s.base)
{
cout<<"栈分配失败"<<endl;
exit(-1);
}
s.top=s.base;
s.size=len;
return 1;
}
int StackEmpty(sqstack &s)
{
if(s.top==s.base)
return 0;
else
return 1;
}
//遍历
int bianli(sqstack &s,int len)
{
int i=0;
if(StackEmpty(s))
{
cout<<"二进制转化为"<<endl;
while(s.top!=NULL&&i<len)
{
cout<<*(--s.top)<<endl;
i++;
}
}
return 0;
}
//入栈
int push(sqstack &s,int e,int &len)
{
if(s.top-s.base>=s.size)
{
s.base=(int *)realloc(s.base,(s.size+10)*sizeof(int));
if(!s.base)
{
exit(-1);
}
s.top=s.base+s.size;
s.size+=10;
}
*s.top++=e;
len++;
return 0;
}
int covn(sqstack &s,int &e,int len)
{
int a,i=0,n=0;
while(e)
{
a=e%2;
e=e/2;
i++;
push(s,a,len);
}
bianli(s,i);
return 0;
}
int main()
{
sqstack sq;
initstack(sq,length);
int e;
cout<<"请输入要转化的元素"<<endl;
cin>>e;
//bianli(sq.top,length);
//push(sq,e,length);
//bianli(sq.top,length);
//int y;
//pop(sq,y,length);
//cout<<"删除元素为"<<y<<endl;
covn(sq,e,length);
return 0;
}
进制转化
最新推荐文章于 2023-11-09 16:02:39 发布