|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct
{
int *base;
int *top;
int stacksize;
}sqstack;
int Initstack(sqstack *s)
{
(*s).base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
if(!(*s).base)
exit(-1);
(*s).top=(*s).base;
(*s).stacksize=STACK_INIT_SIZE;
return 1;
}
int Pop(sqstack *s,int *e)
{
if((*s).top==(*s).base)
{
return 0;
}
e=*--(*s).top;
return 1;
}
int Push(sqstack *s,int e)
{
if((*s).top-(*s).base==(*s).stacksize)
{
(*s).base=(int*)realloc((*s).base,((*s).stacksize+STACKINCREMENT)*sizeof(int));
if(!(*s).base)
exit(-1);
(*s).top=(*s).base+(*s).stacksize;
(*s).stacksize+=STACKINCREMENT;
}
*(*s).top++=e;
return 1;
}
int Stackempty(sqstack s)
{
if(s.top==s.base)
{
return 0;
}
else
return 1;
}
void Conversion()
{
int n,e;
sqstack s;
Initstack(&s);
printf("请输入一个十进制数:");
scanf("%d",&n);
while(n)
{
Push(&s,n%8);
n=n/8;
}
printf("下一步");
while(Stackempty(s))
{
Pop(&s,&e);
printf("%d",e);
}
}
int main()
{
printf("此程序为把十进制用栈转化为八进制\n");
Conversion();
return 0;
}
撸主,我这边是可以的呀~~~
- // e=*--(*s).top;
- *e = *--(*s).top; // MODIFY BY n0noper
复制代码
如果还有错,贴出错误截图大家一起讨论。
|
|