• 大小: 126KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: 其他
  • 标签:

资源简介

数据结构课程设计 表达式求值 完整的程序和代码

资源截图

代码片段和文件信息

#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


评论

共有 条评论

相关资源