Hello 典 2017-04-19 14:10 采纳率: 100%
浏览 561

这是一段C语言栈的操作的代码。但是运行出错帮忙看一下

//用栈的方式将一个二进制转化为十进制
#include
#include
#include
#define STACK_INIT_SIZE 20 //栈的初始化空间
#define STACKINCREMENT 10//扩展空间
typedef char ElemType; //数据类型用ElemType来存放
typedef struct
{
ElemType base;//栈底
ElemType *top;//栈顶
int stacksize;//存储栈空间
}sqStack;//此处typedef是为了声明sqStack为此种结构体
void InitStack(sqStack*s)//初始化栈空间
{
s->base = (ElmeType
)malloc(STACK_INIT_SIZE*sizeof(ElemType));
if(!s->base)
{
exit(0);
}
s->top = s->base;
s->stacksize = STACK_INIT_SIZE;
}
void Push(sqStack*s,ElemType e)//入栈操作
{
if(s->top - s->base >=stacksize)
{
s->base = (ElemType *)realloc(s->base,(s->stacksize +STACKINCREMENT)*sizeof(ElemType))
}
if(!s->base){exit(0)}
*(s->top) = e;
s->top++;
}
void Pop(sqStack *s,ElemType*s)//出栈操作
{
if(s->top == s->base)
return;
*e = *--(s->top);
}
int StackLen(sqStack s)//测量栈的长度
{
return(s.top - s.base)
}
int main()
{
ElemType c;
sqStack s;
int len,i,sum = 0;
printf("please input num,inputing # means the end");//#号意味着输入结束
scanf("%c",&c);
while(c != '#')
{
Push(&s,c);
scanf("%c",&c);
}
getchar();//把回车从缓冲区拿出
len = StackLen(s);
printf("栈的当前容量是%d"&len);
for(i = 0;i<len;i++)
{
Pop(&s,&c);
sum = sum+(c-48)*pow(2,i);
}
printf("转化为十进制数是:%d\n",sum);
return 0;
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作