#include<iostream>
#include<malloc.h>
using namespace std;
#define MAXSIZE 50
typedef int DataType;
typedef struct{
DataType data[MAXSIZE];
int top;
}SeqStack,* PSeqStack;
int main(){
//函数声明
PSeqStack Init_SeqStack(void); /*建栈*/
int Empty_SeqStack(PSeqStack S); /*判断栈是否为空*/
void Push_SeqStack(PSeqStack S,DataType x); /*入栈*/
void Pop_SeqStack(PSeqStack S,DataType * y);/*出栈*/
void Destroy_SeqStack(PSeqStack * S); /*销毁栈*/
void conversion(int n,int r); /*进制转换*/
int n,r;
cout<<"将十进制数n转换成r进制数,请输入n及r:";
cin>>n>>r;
conversion(n,r);
return 0;
}
/*建栈*/
PSeqStack Init_SeqStack(void){
PSeqStack S;
S=(PSeqStack)malloc(sizeof(SeqStack));
if(S){
S->top = -1;//表示空栈
}
return S;
}
/*判断栈是否为空*/
int Empty_SeqStack(PSeqStack S){
if(S->top == -1)
return 1;
else
return 0;
}
/*入栈*/
void Push_SeqStack(PSeqStack S,DataType x){
if(S->top == MAXSIZE-1){
cout<<"栈满不能入栈!";
}else{
S->top++;
S->data[S->top]=x;
}
}
/*出栈*/
void Pop_SeqStack(PSeqStack S,DataType * y){
if(Empty_SeqStack(S)){
cout<<"栈空不能出栈!";
}else{
* y=S->data[S->top];
S->top--;
}
}
/*销毁栈*/
void Destroy_SeqStack(PSeqStack * S){
if(* S)
free(* S);
* S=NULL;
}
/*进制转换*/
void conversion(int n,int r){
DataType x;
if(!r){
cout<<"基数不能为零!";
return;
}
PSeqStack S=Init_SeqStack();
if(!S){
cout<<"栈初始化失败!";
return;
}
while(n){
Push_SeqStack(S,n%r);
n=n/r;
}
cout<<"\n十进制数"<<n<<"转换成"<<r<<"进制数为:";
while(!Empty_SeqStack(S)){
Pop_SeqStack(S,&x);
cout<<x;
}
Destroy_SeqStack(&S);
}
数制转换问题(顺序栈)
最新推荐文章于 2021-11-19 15:29:43 发布