#include <stdio.h>
#include <stdlib.h>
#define STACK_INCREMENT 10
#define STACK_INIT_SIZE 50
typedef struct {
int *base;
int *top;
int stacksize;
}seqstack;
int Initseqstack(seqstack *stack)
{
stack->base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!stack->base)
return 0;
stack->top=stack->base;
stack->stacksize=STACK_INIT_SIZE;
return 1;
}
int push(seqstack *stack,int e)
{
if(stack->top-stack->base>=STACK_INIT_SIZE)
{
stack->base=(int *)realloc(stack->base,(stack->stacksize+STACK_INCREMENT)*sizeof(int));
if(!stack->base)
return 0;
stack->top=stack->base+stack->stacksize;
stack->stacksize+=STACK_INCREMENT;
}
*stack->top=e;
stack->top++;
return 1;
}
int pop(seqstack *stack,int *e)
{
if(stack->base==stack->top)
return 0;
*e=*--stack->top;
return 1;
}
int Isstackempty(seqstack *stack)
{
if(stack->top==stack->base)
return 1;
else return 0;
}
void Conversion(seqstack *stack)
{
int n,e;
Initseqstack(stack);
scanf("%d",&n);
while(n)
{
push(stack,n%2);
n=n/2;
}
while(!Isstackempty(stack))
{
pop(stack,&e);
printf("%d",e);
}
}
void main()
{
seqstack s;
Conversion(&s);
}
十進制轉換爲二進制(棧)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.