| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1641 人关注过本帖
标题:数据结构表达式求值
只看楼主 加入收藏
Rainsweet
Rank: 1
来 自:江西财经大学
等 级:新手上路
帖 子:8
专家分:0
注 册:2019-11-25
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:2 
数据结构表达式求值
#include<string.h>
#include<ctype.h>
#include<malloc.h>
#include<limits.h>
#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#include<math.h>
#include<iostream.h>
#include<process.h>
#include<conio.h>//函数结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
typedef int Status;//Status是函数的类型,其值是函数结果状态代码,如OK等
typedef int ElemType;
const int STACK_ INIT_SIZE=100;
const int STACKINCREMENT=10;
typedef struct{   
ElemType *base;   
 ElemType *top;   
int stacksize;}Stack;
Status InitStack(Stack &S){//构造一个空栈S  
  S.base=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));   
 if(!S.base)      
 exit (ERROR);   
 S.top=S.base;   
 S.stacksize=STACK_INIT_SIZE;   
 return OK;}
Status Push(Stack &S,ElemType e){//插入元素e为新的栈顶元素  
  if(S.top-S.base>=S.stacksize)    {      
 S.base=(ElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType));     
   if(!S.base)
exit(OVERFLOW);      
 S.top=S.base+S.stacksize;   
    S.stacksize+=STACKINCREMENT;    }   
 *S.top++=e;    return OK;}
Status Pop(Stack&S,ElemType &e){//若栈不空,则删除,用e返回其值,并返回OK;否则返回ERROR   
 if(S.top==S.base)        
return ERROR;   
 e=*--S.top;   
 return OK;}
Status GetTop(Stack &S){//若栈不空,用e返回S的栈顶元素,并返回OK;否则返回ERROR  
  if(S.top==S.base)        
return ERROR;   
 e=*--S.top;   
 return OK;}
Status GetTop(Stack &S){//若栈不空,用e返回S的栈顶元素,并返回OK;否则返回ERROR  
  if(S.top==S.base)     
   return ERROR;   
 return *(S.top-1             ''}
Operate.h:  
  #include"Stack.h"   
Status In(char c)    {//判别c是否为运算符      
  if(c=='+'||c=='-'||c=='*'||c=='/'||c=='('||c==')'||c=='#')         
   return OK;      
 else           
 return ERROR;    }   
 Status Operate(int a,char c,int b){//二元运算      
 switch(c){         
  case '+': return a+b;break;         
  case '-': return a-b;break;   
        case '*': return a*b;break;      
      case '/': if(b==0) {printf(" (提示:存在除数为零错误)\n");
return ERROR;}//除数不能为零            
else return a/b;
break;        }   
 }   
char precede(char a,char b){//算符间优先关系      
 switch(a){   
     case '+':         
   switch(b)            {            
    case '+': return '>';break;         
      case '-': return '>';break;         
       case '*': return '<';break;              
  case '/': return '<';break;            
   case '(': return '<';break;               
case ')': return '>';break;              
  case '#': return '>';break;            }break;           
     case '-':                  
  switch(b)                    {         
               case '+': return '>';break;              
          case '-': return '>';break;                     
   case '*': return '<';break;               
        case '/': return '<';break;                    
    case '(': return '<';break;                    
    case ')': return '>';break;                     
  case '#': return '>';break;                    }break;               
        case '*':                           
 switch(b)                            {                 
               case '+': return '>';break;                 
               case '-': return '>';break;            
                   case '*': return '>';break;                  
             case '/': return '>';break;                       
         case '(': return '<';break;                        
        case ')': return '>';break;                       
         case '#': return '>';break;                          
  }break;                              
  case '/':                              
     switch(b)                                    {                                 
       case '+': return '>';break;                             
           case '-': return '>';break;                                 
      case '*': return '>';break;                           
             case '/': return '>';break;                              
          case '(': return '<';break;                                
        case ')': return '>';break;                                   
     case '#': return '>';break;                                
    }break;                                       
 case '(':                                          
 switch(b)                                               {                 
                                  case '+':return '<';break;                  
                                case '-':return '<';break;                    
                               case '*':return '<';break;                                
                   case '/':return '<';break;                                 
                  case '(':return
各位大佬,这是数据结构里面表达式求值的C语言程序,但是还做不出来,麻烦大佬帮帮我解决一下,谢谢
搜索更多相关主题的帖子: break base case include return 
2020-05-29 13:53
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
收藏
得分:20 
提出你的问题是哪里不懂,或者先把你的代码先理顺一下哈

借用一下侯捷的话:勿在浮沙筑高台。
2020-05-29 15:32
Rainsweet
Rank: 1
来 自:江西财经大学
等 级:新手上路
帖 子:8
专家分:0
注 册:2019-11-25
收藏
得分:0 
是那个Operate.h那里出问题了,然后下面那个#include"Stack.h"也有问题,麻烦大佬帮帮我
2020-05-29 16:45
快速回复:数据结构表达式求值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017233 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved