帮我看看我逆波兰表达的C程序

来源:百度知道 编辑:UC知道 时间:2024/05/16 02:15:00
主要帮我把式子给计算出结果

#include <stdlib.h>
#include <stdio.h>
const int MS=100;
typedef int SElemType;
typedef struct SqStack
{ char *base;
char *top;
char stacksize;
}SqStack;
//程序
void InitStack (SqStack &S)
{
S.base=(char *) malloc (MS *sizeof(char));
if (!S.base)
exit (0); //为栈S分配存储空间失败
S.top=S.base;
S.stacksize=MS;
}
int Push(SqStack &S,char ch)
{
if (S.top-S.base>S.stacksize) //Stack==full?
{ S.base=(char *)realloc(S.base,(S.stacksize+MS *sizeof(char)));
if (!S.base)
{ printf("Failure to reallocate the Memory units!:\n");
exit(0);
}
S.top=S.base+S.stacksize; S.stacksize+=MS;
}
*S.top++=ch; return(1);
}
int Pop(SqStack &S,char &ch)
{
if (S.top==S.base)
{
printf("下溢!");

声明:我的编译环境是redhat linux9
1.如果这是个C程序的话,那么const 定义常量就是非法的。即便是在win32环境中,也不建议使用这种定义。
2.函数void getch(); 声明中有形式参数,而调用时没有形式参数,这是不允许的。
3.int Pop(SqStack &S,char &ch) 中存在两个参数,但是你调用时为什么只有一个参数。
4.x=Pop(&S)*s; 替换为 x=Pop(&S)*x;
5.在本程序中一个很普遍的问题,就是你把局部变量在当作全局变量来使用,这是无法实现的。
总体上来说你的程序有了太多的错误,加上没有注释,有没有适当的程序段分割,其可读性实在是太差,基本上属于无法了解你的核心算法,建议你重新写一次,添加必要的注释,适当的切分程序段落。这个样子别人是没办法帮你解决的。

http://www.ivdown.com/welcome.aspx?sid=31104