#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多没定义的变量就用了,帮你改过来了,自己对照看看,不过貌似语句虽然没错误了但是运行结果有问题 |
本人这学期选了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;
}