链栈实现数制的转换

/***链栈实现数制的转换***/
#include<iostream>
using namespace std;

#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef struct SNode{
 int data;
 struct SNode *next;
}SNode,*LinkStack;

Status InitStack(LinkStack &S)
{
 S = NULL;
 return OK;
}
bool StackEmpty(LinkStack S)
{
 if(!S)
  return true;
 return false;
}
Status Push(LinkStack &S,int e)
{
 SNode *p = new SNode;
 if(!p)
 {
  return OVERFLOW;
 }
 p->data = e;
 p->next = S;
 S = p;
 return OK;
}
Status Pop(LinkStack &S,int &e)
{
 SNode *p;
 if(!S)
  return ERROR;
 e = S->data;
 p = S;
 S = S->next;
 delete p;
 return OK;
}

//算法3.8 数制的转换(链栈实现)
/*void conversion (int n) {
   //对于输入的任意一个非负十进制数,打印输出与其等值的八进制数
  //请填写完整
 LinkStack S;
 InitStack(S);
 cout<<"输入要转化的数字:";
 int N,e;
 cin>>N;
 while(N)
  {
  Push(S,N%n);
  N=N/n;
  }
 while(!StackEmpty(S))
  {
  Pop(S,e);
  cout<<e;
  }
 cout<<endl;
}*/
void conversion(int n,int N){
 if(n==0) return;
 else
 {
  conversion(n/N,N);
  cout<<n%N;
 }
}
int main()
{ cout<<"输入要转化的数:";
 int n,N;
 cin>>n;
 cout<<"要转化为几进制:";
 cin>>N;
 cout<<"结果为:";
 conversion(n,N);
 cout<<endl;
 return 0;
}


  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值