#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define STACK_INNT_SIZE 100//存储空间初始分配量
#define STACKINCREMENT 10//存储空间分配不足时增量
//创建栈的类型sqstack
typedef struct
{
int *top;//栈顶指针
int *base;//栈底指针,构造前或者销毁后,base=NULL
int stacksize;//栈内空间
}sqstack;
//创造空栈
void initstack(sqstack *s)
{
s->base=(int *)malloc(STACK_INNT_SIZE*sizeof(int));//开辟一片空间
if(!s->base)
{
printf("malloc filed.\n");
exit(0);
}//若失败返回
s->top=s->base;//栈顶指针等于栈底指针
s->stacksize=STACK_INNT_SIZE;
//栈的大小等于申请的存储空间初始分配量构造空栈
}
//入栈操作
void push(sqstack *s,int e)//传入栈s和要存入的数字e
{
if(s->top-s->base>=s->stacksize)//内存发生溢出,这时候就需要再次重新增加内存
{
s->base=(int *)realloc(s->base,(s->stacksize+STACKINCREMENT)* sizeof(int));
//申请扩大空间
if(!s->base)
{
printf("malloc filed.\n");
exit(0);
}//申请空间失败
s->top=s->base+s->stacksize;//栈顶等于扩充后的栈底加上原来的栈大小
s->stacksize+=STACKINCREMENT;//总的栈得空间增大
}
*s->top++=e;//将数字e存在栈顶指针
}
//出栈
void pop(sqstack *s,int *e)
{
if(s->top==s->base)
{
printf("stack is empty!\n");
exit(0);
}
*e=*--s->top;
}
main()
{ int n,m,e;
sqstack s;//创建链表
initstack(&s);//创建堆栈
scanf("%d",&n);
scanf("%d",&m);
while(n)
{
e=n%m;
push(&s,e);
n=n/m;
}
while(s.top!=s.base)
{
pop(&s,&e);
printf("%d",e);
getchar();
}
return 0;
}
经过dev的编译通过了!!!希望能给你提供帮助