关注公众号程序猿从入门到入土查询更方便哦
【8566】利用栈实现数制转换
#include<bits/stdc++.h>
using namespace std;
typedef struct node{
node *first;
node *next;
int data;
}SNode,*SLink;
typedef struct StackLink{
SLink top;
SLink bottom;
SLink head;
}Stack;
void InitStackList(Stack &st){
st.head=new SNode;
st.top=st.head;
st.bottom=st.head;
}
void StackPush(Stack &st,int data){
SLink temp=new SNode;
temp->first=st.top;
temp->next=NULL;
temp->data=data;
st.top=temp;
}
int StackPop(Stack &st){
int n;
if(st.top!=st.bottom){
SLink temp;
temp=st.top;
n=st.top->data;
st.top=st.top->first;
st.top->next=NULL;
delete temp;
}
return n;
}
int main(){
Stack st;
InitStackList(st);
int n,x;
cin>>n>>x;
int a,b;
a=n;
b=x;
while(n/x!=0){
int temp=n%x;
n=n/x;
StackPush(st,temp);
}
StackPush(st,n);
printf("%d(%d)=",a,10);
while(st.top!=st.bottom){
cout<<StackPop(st);
}
printf("(%d)",b);
return 0;
}