cannot convert from 'void *' to 'int'急!!

发布网友 发布时间:1小时前

我来回答

1个回答

热心网友 时间:1分钟前

#include<stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 10
#define STACKINCREMENT 2
#define Status int
#define SElemType int
#define MaxSize 100
#define OK 1
#define ERROR 0

struct SqStack//栈的数据结构
{ SElemType *base;//栈底指针 不变
SElemType *top;//栈顶指针 一直在栈顶元素上一个位置
int stacksize;//栈可用的最大容量
};

Status InitStack(SqStack *s)//初始化栈
{ s->base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!(*s).base)
{ printf(ERROR);
}
s->top=s->base;
s->stacksize=STACK_INIT_SIZE;
return OK;
}

Status Push(SqStack *s,SElemType e)//进栈
{ if(s->top-s->base==s->stacksize) //判断栈满
{ s->base=(int *)realloc((*s).base,(s->stacksize+STACKINCREMENT)*sizeof(int));
if(!s->base)
exit(0);
s->top=s->base+s->stacksize;
s->stacksize+=STACKINCREMENT;
}
*(s->top++)=e;
return OK;
}

Status Pop(SqStack &s,SElemType &e)//出栈 用e返回值
{ if(s.top==s.base)
return 0;//栈空
e=*--(s.top);//先减减 指向栈顶元素,再给e
return e;
}

int PopFromStack(SqStack *s)//输出栈顶到栈底的元素
{ int n;
SElemType e;
//e=malloc (sizeof(int) * 7);
for(n=1; s->top!=s->base; n++)
{ printf("请输入的%d个元素:",n);
scanf("%d",&e);
Push(s,e);
}
}
void Creat(SqStack *s,int a)//创建栈
{ int i,elem;
for(i=1; i<=a; i++)
{ printf("请输入第%d个元素:",i);
scanf("%d",&elem);
Push(s,elem);
}
}
void empty(SqStack *s)//判断是否栈为空
{ if(s->top==s->base)
printf("栈为空\n");
else
printf("栈不空\n");
}
int lenth(SqStack *s)
{ return(s->top-s->base);
}

main()//主函数
{ SqStack s;
int a;
InitStack(&s);
empty(&s);
printf("请输入创建栈的长度");
scanf("%d",&a);
Creat(&s,a);
empty(&s);
printf("栈的长度是:%d\n",lenth(&s));
PopFromStack(&s);
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com