c/c++编程时出现的错误,哪位大虾给给看看如何解决??谢!
出错代码:S->base=(SElemType*)malloc((STACK_INIT_SIZE*sizeof(SElemType)));#include<stdio.h...
出错代码:
S->base = (SElemType*)malloc((STACK_INIT_SIZE * sizeof(SElemType)));
#include <stdio.h>
//#include<stdlib.h>
#include<stdlib.h>
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define SElemType int
//#define Status int
typedef struct Stack{
SElemType * base;
SElemType * top;
int stacksize;
}Stack,*SqStack;
int InitStack(SqStack S){
//创建一个空栈S
S->base = (SElemType*)malloc((STACK_INIT_SIZE * sizeof(SElemType)));
if( !S->base ) exit( OVERFLOW ); //分配内存失败
S->top = S->base;
return OK ;
}//InitStack
int GetTop(Stack S , SElemType* e ){
//若栈不空,则用e返回S的栈顶元素,并返回OK ,否则返回REEOR
if( S.top = S.base ) return( ERROR );//空栈
*e = *(--S.top) ;
return OK ;
}//GetTop 展开
S->base = (SElemType*)malloc((STACK_INIT_SIZE * sizeof(SElemType)));
#include <stdio.h>
//#include<stdlib.h>
#include<stdlib.h>
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define SElemType int
//#define Status int
typedef struct Stack{
SElemType * base;
SElemType * top;
int stacksize;
}Stack,*SqStack;
int InitStack(SqStack S){
//创建一个空栈S
S->base = (SElemType*)malloc((STACK_INIT_SIZE * sizeof(SElemType)));
if( !S->base ) exit( OVERFLOW ); //分配内存失败
S->top = S->base;
return OK ;
}//InitStack
int GetTop(Stack S , SElemType* e ){
//若栈不空,则用e返回S的栈顶元素,并返回OK ,否则返回REEOR
if( S.top = S.base ) return( ERROR );//空栈
*e = *(--S.top) ;
return OK ;
}//GetTop 展开
展开全部
把sizeof前的*改为逗号,malloc()函数有两个参数的,你这只有一个。
追问
那个是 realloc()函数吧??
追答
哦,不好意思,搞错了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
S是局部变量吧
更多追问追答
追问
void conversion(){
//对输入的任意一个非负十进制整数,打印输出与其等值的八进制数
int N , e ;
N = 0 ;
SqStack a = 0 ;
InitStack( a );
scanf( "%d" , N );
while( N ){
Push( a , N%8 );
N = N/8 ;
}
while( a->base != a->top ){
Pop( a , &e );
printf( "%d ", e );
}
printf("\n");
} // conversion
追答
a只是一个指针,没有创建相应的结构体空间,哪来的a->base
应该这样:
Stack st;
SqStack a=&st;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把sizeof前置的指针符号 * 去掉
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是不是没有释放动态分配的内存啊?
追问
上面代码里的没有释放,想是等运行完系统自动收回......
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单看这一句代码没有问题!能不能再具体点。
追问
int Push(SqStack S , SElemType e){
//插入元素e 为新的栈顶元素
if( S->top - S->base == S->stacksize ){
//栈满 ,追加存储空间
S->base = ( SElemType* )realloc( S->base , ( S->stacksize + STACKINCREMENT ) * sizeof( SElemType ));
if( !S->base ) exit( OVERFLOW );
}
*( S->top++ ) = e ;
return OK ;
}//PUSH
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询