• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: C/C++
  • 标签: 后缀式发  

资源简介

将一个表达式先转化为后缀式,然后利用后缀式求表达式的值,可计算多位数、小数、负数。

资源截图

代码片段和文件信息

#include
#include
#include
#include

typedef struct exp{
char data;
struct exp *next;
}Enode*linkStack;

typedef struct num{
float data;
struct num *next;
}Nnode*linkNum;

linkStack initStack(linkStack *LS);
void Push(linkStack *LSchar x);
char Pop(linkStack *LS);
char gettop(linkStack S);
linkNum initNum(linkNum LS);
void NumPush(linkNum *LSfloat x);
float NumPop(linkNum *LS);
float gettop(linkNum LS);
int pre(char a);
void Negativechange(char a[]);
void Trans(char a[]char suff[]);
void suffix(char suff[]char a[]);

void main()
{
char f[80]a[80]suff[80];
int i=0;
puts(“please input your expression:“);
gets(a);
strcpy(fa);
Negativechange(a);
Trans(asuff);
suffix(sufff);
}
/////////////////////////////////////////////////////////////
linkStack initStack(linkStack LS)
{
return LS=NULL;
}

void Push(linkStack *LSchar x)
{
linkStack p=(linkStack)malloc(sizeof(Enode));
p->data=x;p->next=*LS;*LS=p;
}

char Pop(linkStack *LS)
{
linkStack p=*LS;
if(!(*LS))return NULL;
(*LS)=(*LS)->next;
    return p->data;
free(p);
}

char gettop(linkStack LS)
{
if(!LS)return NULL;
return LS->data;
 
}
/////////////////////////////////////////////////////////////
linkNum initNum(linkNum LS)
{
return LS=NULL;
}
void NumPush(linkNum *LSfloat x)
{
linkNum p=(linkNum)malloc(sizeof(Nnode));
p->data=x;p->next=*LS;*LS=p;
}

float NumPop(linkNum *LS)
{
linkNum p=*LS;
if(!(*LS))return NULL;
(*LS)=(*LS)->next;
    return p->data;
free(p);
}

float gettop(linkNum LS)
{
if(!LS)return NULL;
return LS->data;
 
}
/////////////////////////////////////////////////////////////
int pre(char a)
{
if(a==‘*‘||a==‘/‘)return 4;
else if(a==‘+‘||a==‘-‘)return 3;
else if(a==‘(‘)return 2;
else if(a==‘#‘)return 1;
else return 0;
}

void Negativechange(char a[])

评论

共有 条评论

相关资源