#include
#include
#define STACK_INIT_SIZE 10
#define STACK_INCR_SIZE 2
#define OK 1
#define ERROR 1
#define TURE 1
#define FALSE 0
typedef int STATUS;
typedef int SELemType;
typedef struct {
SELemType *top;
SELemType *base;
int stacksize;
}SeqStack;
//++++++++++++++++++++++++++栈的初始化++++++++++++++++++++++++++++++++
int InitStack (SeqStack *S)
{
S->base = (SELemType *)malloc(STACK_INIT_SIZE * sizeof (SeqStack));
if(!(*S->base))
{
printf("The memory allocation is failed !");
return ERROR;
}
S->top=S->base;
S->stacksize = STACK_INIT_SIZE;
return OK;
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int GetTop(SeqStack S,SELemType *e)
{
if(S.base==S.top)
{
printf("The Stack is empty !\n");
return ERROR;
}
*e=*(S.top-1);
return OK;
}
//+++++++++++++++++++++++++入栈push操作+++++++++++++++++++++++++++++++++
int Push(SeqStack *S, SELemType e)
{
if((S->top - S->base )== S->stacksize)
{
S->base = (SELemType *)malloc((S->stacksize+STACK_INCR_SIZE) * sizeof (SeqStack));
if(!S->base)
{
printf("The memory allocation is failed !\n");
return ERROR;
}
S->top=S->base+S->stacksize;
S->stacksize+=STACK_INCR_SIZE;
}
*S->top++=e;
return OK;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++出栈pop操作++++++++++++++++++++++++++++++++
int Pop(SeqStack *S,SELemType *e)
{
if (S->base == S->top)
{
printf("The stack is empty! Couldn't pop element from stack!\n ");
}
*e = *(--S->top);
return OK;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++判断堆栈是否为空+++++++++++++++++++++++++++++++++
int StackIsEmpty(SeqStack S)
{
if (S.base==S.top)
return TURE;
else
return FALSE;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++数值转换为2进制实现++++++++++++++++++++++++++++++
int convert(void)
{
SELemType num;
SELemType Outnum;
SeqStack S;
InitStack(&S);
printf("Please input the number you want to conver to Binary:");
scanf("%d",&num);
while (num){
Push(&S,num%2);
num=num/2;
}
printf("The output number sequence is:");
while(!StackIsEmpty(S))
{
Pop(&S,&Outnum);
printf("%d",Outnum);
}
printf("\n");
return OK;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int main ()
{
convert();
return OK;
}
阅读(715) | 评论(0) | 转发(0) |