您的位置:首页 > 理论基础 > 数据结构算法

数据结构-C语言 栈的简单应用——10进制以内的数制转换

2017-10-31 23:01 399 查看
#include<stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int SElemType;
typedef int Status;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;

Status InitStack(SqStack *s)
{
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 Push(SqStack *s, SElemType e)//入栈
{
if (s->top-s->base>=s->stacksize)
{
s->base=(SElemType*)realloc(s->base, (s->stacksize+STACKINCREMENT)*sizeof(SElemType));
if (!s->base)
return 0;
s->top=s->base+s->stacksize;
s->stacksize+=STACKINCREMENT;
}
*(s->top)=e;
s->top++;
return 1;
}

Status Pop(SqStack *s, SElemType *e)//出栈
{
if (s->top==s->base)
return 0;
*e=*(s->top-1);
s->top--;
return 1;
}

Status StackEmpty(SqStack *s)//判断栈空
{
if (s->top==s->base)
return 1;
return 0;
}

void conversion()//转换
{
SqStack S;
SElemType e;
InitStack(&S);
int di, n;
printf("请输入进制数:\n");
scanf("%d",&di);
printf("请输入要转换的十进制数:\n");
scanf("%d", &n);
while (n)
{
Push(&S, n%di);
n/=di;
}
while (!StackEmpty(&S))
{
Pop(&S, &e);
printf("%d",e);
}
}

int main()
{
conversion();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 算法