注册 登录
编程论坛 数据结构与算法

求英雄帮忙检查一下!

hbiz 发布于 2013-11-04 19:39, 610 次点击
本人这学期选了c语言版的数据结构这门课,很不幸地学得很差,这是书上的一道题,题目是:对于输入的任意一个非负十进制整数,打印输出与其相等的八进制数
红色的部分是编译时出现错误的地方,
问题总共是两个:
C:\Users\ACER\Desktop\Debug\1.cpp(10) : error C2143: syntax error : missing ';' before '<class-head>'
C:\Users\ACER\Desktop\Debug\1.cpp(10) : fatal error C1004: unexpected end of file found
好痛苦!求指教!

#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include<stack>
#define STACK_INIT_SIZE 20;
#define STACKINCREMENT 10;

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



Status InitStack(SqStack S)//构造一个空栈
{
    S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
    if(!S.base)exit(OVERFLOW)//存储分配失败
        S.top=S.base;
    S.stacksize=STACK_INIT_SIZE;
    return OK;
}//InitStack

Status 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=S.base+S.stacksize;
    S.stacksize+=STACKINCREMENT;
    }
    *S.top++=e;
    return OK;
}//Push

Status Pop(SqStack S,SElemType b)//若栈不空,则伸出S的栈顶元素,用b返回其值OK,否则返回ERROR
{
    if (S.top==S.base)return ERROR;
    b=*--S.top;
    return OK;
}//Top

Status StackEmpty(SqStack S) //判断栈是否为空
{
    if(S.top==S.base)
        return TRUE;  
    else return FALSE;  
} //StackEmpty

void conversion()//对于输入的任意一个非负十进制整数,打印输出与其相等的八进制数
{
    InitStack(S);
    scanf("%d",&N);
    while(N)
    {Push(S,N % 8);
    N=N/8;}
    while(!StackEmpty(s))
    {Pop(S,e);
    printf("%d",e);}
}//conversion

 main()
{void conversion;
return 0;
}

5 回复
#2
LiuFuMinH2013-11-04 21:51
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include<stack>
#define STACK_INIT_SIZE 20
#define STACKINCREMENT 10
#define TRUE  1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2

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


Status InitStack(SqStack S)//构造一个空栈
{
    S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
    if(!S.base)exit(OVERFLOW);//存储分配失败
        S.top=S.base;
    S.stacksize=STACK_INIT_SIZE;
    return OK;
}//InitStack

Status 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=S.base+S.stacksize;
    S.stacksize+=STACKINCREMENT;
    }
    *S.top++=e;
    return OK;
}//Push

Status Pop(SqStack S,SElemType b)//若栈不空,则伸出S的栈顶元素,用b返回其值OK,否则返回ERROR
{
    if (S.top==S.base)return ERROR;
    b=*--S.top;
    return OK;
}//Top

Status StackEmpty(SqStack S) //判断栈是否为空
{
    if(S.top==S.base)
        return TRUE;  
    else return FALSE;  
} //StackEmpty

void conversion()//对于输入的任意一个非负十进制整数,打印输出与其相等的八进制数
{   int N,e;
    SqStack S;
    InitStack(S);
    scanf("%d",&N);
    while(N)
    {Push(S,N % 8);
    N=N/8;}
    while(!StackEmpty(S))
    {Pop(S,e);
    printf("%d",e);}
}//conversion

int main()
{void conversion();
conversion();
return 0;
}





你这小错误太多了,n多没定义的变量就用了,帮你改过来了,自己对照看看,不过貌似语句虽然没错误了但是运行结果有问题
#3
LiuFuMinH2013-11-04 21:52
你是大二的学生么
#4
LiuFuMinH2013-11-04 21:54
回复 2楼 LiuFuMinH
具体不懂的话可以加我qq,我也是这个学期学的    992975220
#5
hbiz2013-11-04 21:59
回复 2楼 LiuFuMinH
谢谢了!
#6
爱编聪聪2013-11-04 23:47
你那第一个错误error C2143: syntax error : missing ';' before '<class-head>'
是因为typedef int SElemType后面没加分号
1