数据结构实验之栈与队列一:进制转换2131

数据结构实验之栈与队列一:进制转换

#include stdio.h
#include stdlib.h
#define MAX 100000
typedef struct
{
int *base;//尾指针
int *top;//头指针
}stack;
void Init(stack *S)//创建栈
{
S -> base = (int*)malloc(MAX *sizeof(int));//分配存储空间
S-> top = S -> base;
}
void Push(stack *S, int e)//入栈函数
{
*(S -> top++) = e; //数据入栈,头指针上移
}
void Pop(stack *S)//出栈
{
S -> top–;
}
int Gettop(stack *S)//返回栈顶值
{
return *(S-> top -1);
}
int Empty(stack *S)//判定栈为空
{
if(S->base == S -> top)
return 1;
else
return 0;
}
void Transfer(stack *S, int n, int R, int flag)//进制转换
{
if(n ==0 )
flag = 1;
while(n != 0)
{
Push(S,n % R);
n /= R;
}
if(flag)
printf(“0”);
while(!Empty(S))
{
printf(“%d”,Gettop(S));
Pop(S);
}
}
int main()
{
int n ,R, flag = 0;
stack S;
Init(&S);
scanf(“%d%d”,&n,&R);
Transfer(&S,n,R,flag);
return 0;
}

猜你喜欢

转载自blog.csdn.net/JKxiaoming/article/details/81629848