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 delta降尺度计算的一些细节,有偿
    • ¥15 Arduino红外遥控代码有问题
    • ¥15 数值计算离散正交多项式
    • ¥30 数值计算均差系数编程
    • ¥15 redis-full-check比较 两个集群的数据出错
    • ¥15 Matlab编程问题
    • ¥15 训练的多模态特征融合模型准确度很低怎么办
    • ¥15 kylin启动报错log4j类冲突
    • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
    • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序