用栈实现进制的转换

1.问题描述

将一个十进制整数N转换成八进制,把N与8求余得到八进制数的各位依次进栈,计算完毕后将栈中的八进制依次出栈输出,输出的结果就是待求八进制数

2.算法设计步骤

  1. 初始化一个空栈
  2. 把N与8求余得到的八进制数压入栈中
  3. 分别把栈中的数一个一个输出出来

3.代码详解

#include<iostream>
using namespace std;
#define MAXSIZE 100
#define SElemType int 
#define Status int 
#define OK 1 
#define ERROR 0 
typedef struct{
	SElemType *base;
	SElemType *top;
	int stacksize;
}SqStack;
Status InitStack(SqStack &S)//初始化栈
{
  S.base=new SElemType[MAXSIZE];
  if(!S.base)
  exit(0);
  S.top=S.base;
  S.stacksize=MAXSIZE;
  return OK; 
}
Status Push(SqStack &S,SElemType e)//栈顶加入一个元素
{
	if(S.top-S.base==S.stacksize)
	return ERROR;
	*S.top++=e;
	return OK; 
}
Status Pop(SqStack &S,SElemType &e)//栈顶弹出一个元素
{
	if(S.base==S.top)
	return ERROR;
	e=*--S.top;
	return OK; 
}
Status Empty(SqStack S)//判断栈是否为空
{
	if(S.base==S.top)
	return OK;
    return ERROR;
	 
} 
void conversion(int N,SqStack &S)//实现进制转换
{
	int e;
	InitStack(S);
	while(N)
	{
		Push(S,N%8);
		N=N/8;
	}
	while(!Empty(S))
	{
		Pop(S,e);
		cout<<e; 
	 } 
}
int main()
{
	SqStack S;
	conversion(17,S);
} 

猜你喜欢

转载自blog.csdn.net/qq_45737068/article/details/106588777
今日推荐