堆栈实现十进制转换二进制

/*------------------------------------------------------/
/    a stack to convert bin to dec   /
/------------------------------------------------------*/
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define OVERFLOW 0
#define INTLEN 32
//---------construct a stack-------
struct Stack{
 int * base;
 int * top;
 int stacksize;
};
//-------Init the stack--------------
bool InitStack(Stack &mystack)
{
 mystack.base=(int *)malloc(INTLEN*sizeof(int));
 if(!mystack.base)
 {
  exit(ERROR);
 }
 mystack.top=mystack.base;
 mystack.stacksize = INTLEN;
 return OK;
}//initStack
//---------is stack empty-?-----
bool StackEmpty(Stack S)
{
 if(S.top==S.base)
 {
  return OK;
 }
 return ERROR;
}
//------get the top of the stack-------------
bool GetTop(Stack &mystack,int &e)
{
 if(mystack.top==mystack.base)
 {
  return ERROR;
 }
  e=*(mystack.top-1);
 return OK;
}
//-----push an element into the stack------
bool Push(Stack &mystack,int e)
{
 if(!mystack.base)
 {
  exit(OVERFLOW);
 }
 
 *mystack.top++=e;
 //equal to the follow two sentence
 //*mystack.top=e;
 //mystack.top++;
 return OK;
}//Push
//----Pop an element from the stack-------
int Pop(Stack &mystack,int &e)
{
 if(mystack.top==mystack.base)
 {
  return ERROR;
 }

 e=*--mystack.top;
 //equal to the follow two sentence
 // mystack.top--;
 // e=*mystack.top;
 return OK;
} //Pop
//-------------main function---------------------
void main()
{
 int n=9;
 Stack intstack;
 //scanf("%d",n);
 InitStack(intstack);
 while(n){
  Push(intstack,n%2);
  n/=2;
 }
 while(!StackEmpty(intstack))
 {
  int e=0;
  Pop(intstack,e);
  printf("%d ",e);
 } 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值