回 帖 发 新 帖 刷新版面

主题:初始化栈遇到的问题,帮忙看一下,新手学习中

//以下是一个用于初始化栈的程序,我用的编译器是devcpp,用VC报同样的错
//请帮忙看一下哪儿错了,感激不尽
#include<stdio.h>
#include<malloc.h>

#define STACK_INIT_SIZE 100;

typedef struct{
        int *top;
        int *base;
        int stacksize;
        }SqStack; 

void initstack(SqStack& S);
void check(SqStack S); 

int main() 
{
   SqStack S;
   printf("输入要创建的栈的元素:");
   initstack(S);
   printf("你创建的栈为:");
   check(S);
   system("pause");   
   
   return 0;
}
 
void initstack(SqStack& S)
//初始化栈
{
     int *p;
     int i;
     S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
     //在这里如果用STACK_INIT_SIZE会出错,如果改成具体数字则能成功运行
     if(!S.base) exit(0);
     S.top=S.base;
     S.stacksize=STACK_INIT_SIZE;
     p=S.base;
     for(i=0;i<S.stacksize;i++)
     { 
        scanf("%d",p++);
        S.top++;
        }        
     }
     
void check(SqStack S)
//用于回显栈中元素
{
     int *p;
     for(p=S.base;p<S.top;p++)
        printf("%d ",*p);        
        }

回复列表 (共2个回复)

沙发


把 #define STACK_INIT_SIZE 100;该语句中的分号去掉

[em9][em9][em9]

板凳

//以下是一个用于初始化栈的程序,我用的编译器是devcpp,用VC报同样的错
//请帮忙看一下哪儿错了,感激不尽
#include<stdio.h>
#include<malloc.h>

#define STACK_INIT_SIZE 100

typedef struct{
        int *top;
        int *base;
        int stacksize;
        }SqStack; 

 initstack(SqStack& S);
void check(SqStack S); 

int main() 
{
   SqStack S;
   printf("输入要创建的栈的元素:");
   initstack(S);
   printf("你创建的栈为:");
   check(S);
  // system("pause");   
   
   return 0;
}
 
 initstack(SqStack& S)
//初始化栈
{
     int *p;
     int i;
     S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
     //在这里如果用STACK_INIT_SIZE会出错,如果改成具体数字则能成功运行
     if(!S.base) return 0;
     S.top=S.base;
     S.stacksize=STACK_INIT_SIZE;
     p=S.base;
     for(i=0;i<S.stacksize;i++)
     { 
        scanf("%d",p++);
        S.top++;
        }        
     }
     
void check(SqStack S)
//用于回显栈中元素
{
     int *p;
     for(p=S.base;p<S.top;p++)
        printf("%d ",*p);        
        } 
按照楼上那位兄说的把#define STACK_INIT_SIZE 100;该语句中的分号去掉;
再把初始化栈中的exit(0);改为return 0;同时把该函数定义和声明中的void去掉;再把main函数中的system("pause");屏蔽掉就可以运行了.上面是我改好的程序,看一下吧.

我来回复

您尚未登录,请登录后再回复。点此登录或注册