利用栈将十进制数转换成二到十六进制之间的任一进制数输出。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define MAXSIZE 100
typedef int elemtype;
typedef struct
{
elemtype data[MAXSIZE];
int top;
}SeqStack;
SeqStack *InitStack(SeqStack *S)
{
S=(SeqStack *)malloc(sizeof(SeqStack));
S->top=-1;
return(S);
}
Push(SeqStack *S,elempyte item,elempyte k)
{
int i; /*k表示进制数,i表示余数*/
if(S->top==MAXSIZE-1)
{
printf("Stack overflow!");
return(0);
}
else
{
while(i>=k)
{
i=item%k;
item=item/k;
S->data[++S->top]=i;
}
S->data[++S->top]=item;
return (1);
}
}
int Pop(SeqStack *S)
{
if(S->top==-1)
{
printf("Stack is empty!");
return(0);
}
else
{
return(S->data[S->top--]);
}
}
int main()
{
SeqStack *S;
elempyte item,k;
print("请输入你要转换的数和转换的进制:\n");
scanf("%d%d",&item,&k);
S=InitStack(S);
*InitStack(S);
Push(S,item,k);
Pop(S);
}
哪里错了,,怎么改 谢谢啦
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define MAXSIZE 100
typedef int elemtype;
typedef struct
{
elemtype data[MAXSIZE];
int top;
}SeqStack;
SeqStack *InitStack(SeqStack *S)
{
S=(SeqStack *)malloc(sizeof(SeqStack));
S->top=-1;
return(S);
}
Push(SeqStack *S,elempyte item,elempyte k)
{
int i; /*k表示进制数,i表示余数*/
if(S->top==MAXSIZE-1)
{
printf("Stack overflow!");
return(0);
}
else
{
while(i>=k)
{
i=item%k;
item=item/k;
S->data[++S->top]=i;
}
S->data[++S->top]=item;
return (1);
}
}
int Pop(SeqStack *S)
{
if(S->top==-1)
{
printf("Stack is empty!");
return(0);
}
else
{
return(S->data[S->top--]);
}
}
int main()
{
SeqStack *S;
elempyte item,k;
print("请输入你要转换的数和转换的进制:\n");
scanf("%d%d",&item,&k);
S=InitStack(S);
*InitStack(S);
Push(S,item,k);
Pop(S);
}
哪里错了,,怎么改 谢谢啦