VC下实现多项式的加减乘除

该博客介绍了如何在VC环境下实现多项式的加减乘除操作。通过定义结构体NODE和oper,实现了进栈、出栈等操作,并利用get_token()函数获取表达式中的符号和数字。通过calc()函数根据运算符的优先级进行计算,最后调用calc_two()完成实际的运算过程。示例代码中包含完整的计算表达式的流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include"stdio.h"
#include "stdlib.h"
#define  ERROR  99999
#define  LFTE_BRACE  5
#define  RIGHT_BRACE 6
#define  END         7
float calc_two(char sybol,float number1,float number2);
/*------------------------------------*/
typedef struct NODE
{
 float data;
 struct NODE *next;
}sign_data;
/*-------------------------------------
进栈函数push_stack()
---------------------------------------*/
int push_stack(float data,sign_data** data_top)
{
 sign_data* p=NULL;
 p = (void *)malloc(sizeof(sign_data));
 if(p==NULL) return 0;
 (*p).data = data;//把要送入的数据给节点
 (*p).next = (*data_top);//节点的指针指向
 (*data_top) = p;
 return 1;
}
/*----------------------------------------
出栈函数pop_stack()
-----------------------------------------*/
float pop_stack(sign_data **data_top)
{
    sign_data pop_data;
 if(*data_top==NULL) return 0;
 pop_data.data = (*data_top)->data;
 pop_data.next = (*data_top)->next;
 free(*data_top);
 *data_top = pop_data.next;
 return pop_data.data;
}
typedef struct oper
{
 char symbol[2];
 int number;
}symbol_data;

symbol_data express_sign[]={
 { {' ',' ' },0},
 { {'+','/0'},1},
 { {'-','/0'},2},
 { {'*','/0'},3},
 { {'/','/0'},4},
 { {'(','/0'},5},
 { {')','/0'},6},
 { {'/0','/0'},7},
};

/*----------------------------------------------------
优先级的设计:
优先级分为:当前优先级和栈顶优先级
只有当当前的优先级小于栈顶的优先级才能够进行出栈的操作
-------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值