资源简介
数据结构课程设计 表达式求值 完整的程序和代码
代码片段和文件信息
#include
#include
#include
#include
#include
#define TRUE 1
#define FALSE 0
#define Stack_Size 50
char ops[7]={‘+‘‘-‘‘*‘‘/‘‘(‘‘)‘‘#‘}; /*运算符集合*/
int cmp[7][7]={{2211122} /*用来进行比较运算符优先级的矩阵3代表‘=‘2代表‘>‘1代表‘<‘0代表不可比*/
{2211122}
{2222122}
{2222122}
{1111130}
{2222022}
{1111103}};
typedef struct
{
char elem[Stack_Size];
int top;
}SeqStack; /*运算符栈的定义*/
typedef struct
{
int elem[Stack_Size];
int top;
}nSeqStack; /* 运算数栈的定义*/
void InitStack(SeqStack *S)
{
S->top =-1;
}
void InitStackn(nSeqStack *S)
{
S->top =-1;
}
int IsEmpty(SeqStack *S)
{
return(S->top==-1?TRUE:FALSE);
}
int IsEmptyn(nSeqStack *S)
{
return(S->top==-1?TRUE:FALSE);
}
/*判栈满*/
int IsFull(SeqStack *S)
{
return(S->top==Stack_Size-1?TRUE:FALSE);
}
int IsFulln(nSeqStack *S)
{
return(S->top==Stack_Size-1?TRUE:FALSE);
}
int Push(SeqStack *S char x) /*运算符栈入栈函数*/
{
if (S->top==Stack_Size-1)
{
printf(“Stack is full!\n“);
return FALSE;
}
else
{
S->top++;
S->elem[S->top]=x;
return TRUE;
}
}
int Pushn(nSeqStack *S int x) /*运算数栈入栈函数*/
{
if (S->top==Stack_Size-1)
{
printf(“Stack is full!\n“);
return FALSE;
}
else
{
S->top++;
S->elem[S->top]=x;
return TRUE;
}
}
int Pop(SeqStack *S char *x) /*运算符栈出栈函数*/
{
if (S->top==-1)
{
printf(“运算符栈空!\n“);
return FALSE;
}
else
{
*x=S->elem[S->top];
S->top--;
return TRUE;
}
}
int Popn(nSeqStack *S int *x) /*运算数栈出栈函数*/
{
if (S->top==-1)
{
printf(“运算符栈空!\n“);
return FALSE;
}
else
{
*x=S->elem[S->top];
S->top--;
return TRUE;
}
}
char GetTop(SeqStack *S) /*运算符栈取栈顶元素函数*/
{
if (S->top ==-1)
{
printf(“运算符栈为空!\n“);
return FALSE;
}
else
{
return (S->elem[S->top]);
}
}
int GetTopn(nSeqStack *S) /*运算数栈取栈顶元素函数*/
{
if (S->top ==-1)
{
printf(“运算符栈为空!\n“);
return FALSE;
}
else
{
return (S->elem[S->top]);
}
}
int Isoperator(char ch) /*判断输入字符是否为运算符函数是返回TRUE不是返回FALSE*/
{
int i;
for (i=0;i<7;i++)
{
if(ch==ops[i])
return TRUE;
}
return FALSE;
}
/*
int isvariable(char ch)
{ if (ch>=‘a‘&&ch<=‘z‘)
return true;
else
return false;
}*/
char Compare(char ch1 char ch2) /*比较运算符优先级函数*/
{
int imn;
char pri;
int priority;
for(i=0;i<7;i++)
{
if(ch1==ops[i])
m=i;
if (ch2==ops[i])
n=i;
}
priority = cmp[m][n];
switch(priority)
{
case 1:
pri=‘<‘;
break;
case 2:
pri=‘>‘;
break;
case 3:
pri=‘=‘;
break;
case 0:
pri=‘$‘;
printf(“表达式错误!\n“);
break;
}
return pri;
}
int Execute(int a char op int b) /*运算函数*/
{
int result;
switch(op)
{
case ‘+‘:
result=a+b;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4615 2008-07-10 09:33 数据结构课程设计\表达式求值问题.c
文件 225792 2008-11-16 12:13 数据结构课程设计\表达式求值问题.doc
目录 0 2008-11-16 12:10 数据结构课程设计
----------- --------- ---------- ----- ----
230407 3
- 上一篇:高压直流输电
- 下一篇:ImapiService.reg
评论
共有 条评论