📄 栈的数制转换算法.cpp
字号:
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#define OVERFLOW -1
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int SElemType;
typedef int Status;
struct STACK
//栈的结构定义//
{
SElemType *base;
SElemType *top;
int stacksize;
};
typedef struct STACK SqStack;
typedef struct STACK *pSqStack;
Status InitStack(SqStack **S);
Status StackEmpty(SqStack S);
Status Push(SqStack *S,SElemType e);
Status Pop(SqStack *S,SElemType *e);
void conversion();
Status InitStack(SqStack **S)
//初始化栈//
{
(*S)=(SqStack *)malloc(sizeof(SqStack));
(*S)->base=(SElemType *)malloc(STACK_INIT_SIZE *sizeof(SElemType));
if(!(*S)->base)
return(0);
(*S)->top=(*S)->base;
(*S)->stacksize=STACK_INIT_SIZE;
return (1);
}
Status StackEmpty(SqStack S)
//判断栈是否为空//
{
if(S.top==S.base) return (1);
else
return (0);
}
Status Push(SqStack *S,SElemType e)
//入栈算法//
{
*(S->top++)=e;
return (1);
}
Status Pop(SqStack *S,SElemType *e)
//出栈算法//
{
if(S->top==S->base) return (0);
*e=*(--(S->top));
return (1);
}
void conversion()
//进制转换算法//
{
pSqStack S;
SElemType e;
int n,f;
InitStack(&S);
printf("请输入你要转换的进制数:\n");
scanf("%d",&n);
printf("请输入你要转换的进制:\n");
scanf("%d",&f);
if(n<0)
{
printf("\n你输入的数为负.");
return;
}
if(!n) Push(S,0);
while(n){
Push(S,n%f);
n=n/f;
}
printf("转换后的数为: \n");
while(!StackEmpty(*S)){
Pop(S,&e);
printf("%d",e);
}
}
void main()
{
printf("\n\n\n");
conversion();
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -