进制转换
栈的建立
#include<stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define ERROR -1
typedef struct Stack{
int* base;
int* top;
int Stackhigh;
}Stack;
void initstack(Stack& s)
{
s.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
if(!s.base) exit(ERROR);
s.top=s.base;
s.Stackhigh=STACK_INIT_SIZE;
}
栈的push 和pop
void Push(Stack& s,int e)
{
if(s.top-s.base>=s.Stackhigh)
{
int* newbase=(int*)realloc(s.base,STACKINCREMENT*sizeof(int));
if(!newbase) exit(ERROR);
s.base=newbase;
s.top=s.base+s.Stackhigh;
s.Stackhigh+=STACKINCREMENT;
}
*s.top=e;
s.top++;
}
void Pop(Stack& s)
{
int e;
if(s.base==s.top) return;
s.top--;
e=*s.top;
printf("%d",e);
}
十进制转换为二进制
int main()//具体实现,此处是56的二进制
{
Stack s;
initstack(s);
int N=56;
while(N)
{
Push(s,N%2);
N=N/2;
}
while(s.base!=s.top)
Pop(s);
}