中缀表达式换成后缀表达式的问题(c语言)

来源:百度知道 编辑:UC知道 时间:2024/09/25 03:20:00
只做简单的转换,数字都只有一位,不考虑括号的情况下(意思我先不输入括号,或者有括号也不去),
我输入1+3可以转化成 13+,但是我输入1+3+3,就没有输出了
麻烦高手们帮小弟看看,出错在哪里(我估计是在while循环那里,不过老是没有看出来,麻烦高手帮忙看看)并希望你给出详细的解答,谢谢了哈 ,解答的好可以加分,多谢了
代码如下:
calc.h:

#ifndef __CALC_H__
#define __CALC_H__
#include<stdio.h>
#include<malloc.h>
char *ch,value; //
typedef struct SNode{
char c; //
struct SNode * next; //
}SNode,*LinkStack; //
//
int InitLinkStack(LinkStack *top)
{
*top=(LinkStack)malloc(sizeof(SNode));
if (*top==NULL){printf("init error!\n");return 0;}
(*top)->next=NULL;
return 1;
}
//
int StackEmpty(LinkStack top)
{
if (top->next==NULL)
{
printf("error\n");
return 1;
}
else
return 0;
}
//
int PushLinkStack(LinkStack top,char c)
{
SNode *p;
p=(SNode*)malloc(sizeof(SNode));
if (!p){printf("push er

原输入字符串后面不用添加#,字符串的结束符是'\0'

#不应该参与比较,但是要第一个压入堆栈,a数组定义为[6][6]。在poplinkstack时用循环,因为出栈的可能是多个运算符。当数字读入结束时(也就是字符串结束时)输出所有在站内的符号,直到#的出现。