【数据结构作业三】利用栈(以顺序栈作存储结构)实现二、十和十六进制转换

#include 
#define MAXSIZE 100 
using namespace std;
typedef int SElemType;
typedef struct
{
	SElemType *base;
	SElemType *top;
}SqStack;
bool InitStack(SqStack &S)
{
	S.base=new SElemType[MAXSIZE];
	if(!S.base)
	 {
	 cout << "存储分配失败!" << endl;
	 return false;
	 }
	S.top=S.base;
   	return true;
}
bool Push(SqStack &S,SElemType e)
{
	if(S.top-S.base==MAXSIZE)
	return false;
	*S.top++=e;
	return true;
}
bool Pop(SqStack &S,SElemType &e)
{
	if(S.top==S.base)
	return false;
	e=*--S.top;
	return true;
}
bool StackEmpty(SqStack S)
{
    if(S.top ==S.base) 
    {
        return true;
    }
    else
    {
        return false;
    }
}
SElemType GetTop(SqStack S)
{
	if(S.top!=S.base)
	  return *(S.top-1);
}
void conversion(int N,int M)
{
	SqStack S;
	SElemType e;
	InitStack(S);
	while(N)
	{
		Push(S,N%M);
		N=N/M; 
	}
	while(!StackEmpty(S)) 
	{
		Pop(S,e);
		cout<>N; 
    cout<<"-----数制转换-----"<>x;
    while(x)
    {  switch(x)
       { case 1:conversion(N,2); break;
         case 2:conversion(N,8); break;
         case 3:conversion16(N); break;
         case 0:break;
         default:cout<<"你的选择有错,请重新选择!" ; 
	   }
	   cout<<"\n请输入你的选择:"; cin>>x;
    }	  
  return 0; 
}

你可能感兴趣的:(数据结构,大学)