数据结构实验五——栈实现数制转换

来源:互联网 发布:网络大电影宣发公司 编辑:程序博客网 时间:2024/05/24 06:54
#include <stdio.h>#include <stdlib.h>#define N 10#define M 5typedef struct SeqStack{    int stacksize;    int *base;    int *top;}SeqStack;void Initstack(SeqStack *S){    S->base=(int *)malloc(N*sizeof(int));    if(!S->base)        exit(1);    S->top=S->base;    S->stacksize=N;}void Pushstack(SeqStack *S,int e){    if(S->top-S->base>=S->stacksize)    {        S->base=(int *)realloc(S->base,(S->stacksize+M)*sizeof(int));        S->stacksize+=M;    }    *S->top++=e;}int Popstack(SeqStack *S){    return *--S->top;}int Emptystack(SeqStack S){    if(S.base>=S.top)        return 1;    else        return 0;}void Destroystack(SeqStack *S){    free(S->base);}int main(){    int n,m;    SeqStack S;    int e;    while(1)    {        printf("请输入要转换的数值(输入非正数退出):\n");        scanf("%d",&n);        if(n<=0)            break;        printf("请输入要转换的数制:\n");        scanf("%d",&m);        Initstack(&S);        while(n)        {            Pushstack(&S,n%m);            n=n/m;        }        while(!Emptystack(S))        {            e=Popstack(&S);            printf("%d",e);        }        printf("\n");        Destroystack(&S);    }    return 0;}

0 0