【文件属性】:
文件名称:简单计算器的设计与实现
文件大小:164KB
文件格式:RAR
更新时间:2012-06-18 14:50:05
计算器
简单计算器的设计与实现
2.4 代码部分
#include
#include
#define TRUE 1
#define FALSE 0
#define MAXNUM 100
typedef int DataType;
struct SeqStack {
DataType s[MAXNUM];
int t;
};
typedef struct SeqStack *PSeqStack;
PSeqStack createEmptyStack_seq()
{ PSeqStack pastack;
pastack=(PSeqStack)malloc(sizeof(struct SeqStack));
if (pastack==NULL)
{
printf("超出空间!!\n");
}
else
{
pastack->t=-1;
}
return pastack;
}
int isEmptyStack_seq(PSeqStack pastack)
{
return pastack->t==-1;
}
void push_seq(PSeqStack pastack, DataType x)
{
if (pastack->t >= MAXNUM - 1)
printf("溢出!\n");
else
{
pastack->t = pastack->t+1;
pastack->s[pastack->t]=x;
}
}
void pop_seq(PSeqStack pastack)
{
if (pastack->t==-1)
{
printf("未溢出!\n");
}
else
{
pastack->t = pastack->t-1;
}
}
DataType top_seq(PSeqStack pastack)
{
return pastack->s[pastack->t];
}
int infixtoSuffix(const char* infix, char* suffix)
{ /*将中缀表达式转换为后缀表达式,顺利转换返回true,若转换过程中发现中缀表达式非法则返回false*/
int state_int = FALSE;
/*state_int记录状态,等于true表示刚读入的是数字字符,等于false表示刚读入的不是数字字符,
设置这个变量是为了在每输出一个整数后输出一个空格,以免连续输出的两个整数混在一起。*/
char c, c2;
PSeqStack ps = createEmptyStack_seq(); /*运算符栈*/
int i, j = 0;
if(infix[0]=='\0')
{
return FALSE; /*不允许出现空表达式*/
}
for(i=0; infix[i]!='\0';i++)
{
c=infix[i];
switch(c)
{
case ' ':
case '\t':
case '\n':
if(state_int== TRUE)
{
suffix[j++]=' ';/*状态从true转换为false时输出一个空格*/
}
state_int= FALSE;
break; /*遇到空格或制表符忽略*/
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
state_int =TRUE;
suffix[j++]=c; /*遇到数字输出*/
【文件预览】:
简单算器的设计与实现
----新建 文本文档.opt(48KB)
----新建 文本文档.dsp(3KB)
----Debug()
--------新建 文本文档.exe(184KB)
--------vc60.pdb(52KB)
--------vc60.idb(33KB)
--------新建 文本文档.pdb(457KB)
--------新建 文本文档.ilk(184KB)
--------新建 文本文档.obj(15KB)
----新建 文本文档.plg(1KB)
----新建 文本文档.txt(6KB)
----新建 文本文档.dsw(534B)
----新建 文本文档.ncb(41KB)