用c语言的栈来编写逆波兰公式的程序
发布:2020-01-14 09:23:56 分类:问答精选 点击:1779 作者:环俄小编
用c语言的栈来编写逆波兰公式的程序,一、用c语言的栈来编写逆波兰公式的程序如题,代码如下,欢迎探讨!!![code=C/C++][/code]/* 表达式的后缀表示及其求值 */#include <stdio.h>typedef int ElemType; /* 考虑到char型运算时的隐形提升会溢出,此处定义为int,代价仅浪费了内存空间
本文标题:用c语言的栈来编写逆波兰公式的程序,在当今社会,留学已经成为了大家深造的首选方式。无论是本科生、硕博研究生,甚至是中小学生,都想尽早地接收西方发达国家的留学教育,其中很多同学十分关注“用c语言的栈来编写逆波兰公式的程序”相关的问题,为此环俄小编整理了《用c语言的栈来编写逆波兰公式的程序》,欢迎您阅读!若有任何疑问,欢迎您随时联系我们的在线顾问,我们会为您进行专业的1对1答疑!
一、用c语言的栈来编写逆波兰公式的程序
[code=C/C++][/code]
/* 表达式的后缀表示及其求值 */
#include <stdio.h>
typedef int ElemType; /* 考虑到char型运算时的隐形提升会溢出,此处定义为int,代价仅浪费了内存空间 */
#define MAXNUM 16
struct stack
{
ElemType data[MAXNUM];
int top;
};
void StackInit(struct stack *stack)
{
int i = 0;
for(;i < MAXNUM;i++)
{
stack->data[i] = 0;
}
stack->top = 0; /* 栈底部从索引0处开始 */
}
void StackPush(struct stack *stack,ElemType c)
{
if(MAXNUM == stack->top) /* 栈中元素最多有MAXNUM - 1个 */
{
printf("The stack is full ");
return;
}
stack->data[stack->top++] = c;
}
ElemType StackPop(struct stack *stack)
{
if(0 == stack->top)
{
printf("The stack is empty "); /* 当栈空时,若返回0是错误的 */
return 0;
}
return stack->data[--stack->top];
}
void PostfixEvaluation(struct stack *stack)
{
return; /* 这个函数非常简单了,所有的麻烦都已经解决了,我实在不想完成它 */
}
int ChangeToPostfix(char *str)
{
int i = 0,flag = 0; /* flag 用来标记连续数字的出现,没想到好点的办法 */
int c,ch;
struct stack ch_stack;
struct stack op_stack;
StackInit(&ch_stack);
StackInit(&op_stack);
while( != (c = *(str + i))) /* 此处需注意的是:如果是静态的字符串,以为结束条件,如果是用户输入的,则以 ’为结束条件 */
{
if((* == c) || (/ == c) || (( == c))
{
flag = 0;
StackPush(&op_stack,c);
}
else if() == c)
{
flag = 0;
while(( != (c = StackPop(&op_stack)))
{
StackPush(&ch_stack,c);
}
if(0 == op_stack.top)
{
printf("the ( hasnt found when the ) come in! ");
return -1;
}
}
else if((+ == c)|| (- == c))
{
flag = 0;
/* +和-优先级低,运算符栈中的((如果存在)后的所有运算符需推出 */
if(0 != op_stack.top) /* 你可以不在此处添加top的检查,那样,你可以发现 StackPop错误返回的0被拾取了 */
{ /* 被逼无奈,只得在此检查top值,无法寄希望于StackPop了 */
while(( != (ch = StackPop(&op_stack)))
{
StackPush(&ch_stack,ch);
if(0 == op_stack.top)
{
break;
}
}
}
StackPush(&op_stack,c);
}
else if((c >= 0) && (c <= 9)) /* 对于表达式中2位或多位连续的数字,需特殊处理 */
{
if(0 == flag)
{
StackPush(&ch_stack,(c - 0));
flag = 1;
}
else
{
StackPush(&ch_stack,10 * StackPop(&ch_stack) + (c - 0));
}
}
i++;
}
while(0 != op_stack.top) /* 表达式处理结束,将运算符栈中的所有运算符推出并压入字符栈 */
{
StackPush(&ch_stack,StackPop(&op_stack));
}
PostfixEvaluation(&ch_stack); /* 该函数放在此处可能较为欠妥,可是,只要完成了任务不就OK了么,难道你会在乎? */
/*just test */
for(i = 0;i < ch_stack.top;i++)
{
if(+ == ch_stack.data[i])
{
printf("+..");
}
else if(- == ch_stack.data[i])
{
printf("-..");
}
else if(* == ch_stack.data[i])
{
printf("*..");
}
else if(/ == ch_stack.data[i])
{
printf("/..");
}
else
{
printf("%d..",ch_stack.data[i]);
}
}
return 0;
}
int main(void)
{
char str[] = "12 + 34 * 435 - 5 / 1";
/* just test */
printf("The result should be : ");
printf("12 34 435 * + 5 1 / - [= 8] ");
if(-1 == ChangeToPostfix(str))
{
printf("ChangeToPostfix() error ");
return 1;
}
return 0;
}
二、求翻译 不晓得是哪国语言
超级为什么这么多就在这时,当你不知道是否要微笑或严肃,该死的,但在一般情况下,超级图片等;)
写法绝对有问题 不是正规书写 可能是哪个人的个人签名之类的吧 以上是以波兰语为基准翻译的
三、那些明星会多国语言咯?
立威廉
8国
四、谁能用7个国家的语言说我爱你?
波兰语:kochamciebie
马兰西亚语: nian ninne
德语:lch liebe dich
匈牙利语:szeretlek
缅甸语:chit pa de
马耳他语:lnhobbok
捷克语:miluji te
克罗地亚语:volim te
加纳语:me do wo
荷兰:lk hou van jou
豪萨语:lnasonki
?????? ????????阿拉伯文
?????? ?????????? 朝鲜语
Ich liebe dich 德语
Я тебя люблю 俄语
爱しています 日语
I love you 英语
Ti amo 意大利语
∑ε αγαπ?? 希腊语
Jag ??lskar dig 瑞典语
Je t'aime 法语
Volim te 克罗地亚文
还有我对你说的 《 我爱你 》
这不是更有代表性吗?
五、有谁知道波兰罗兹大学的法学和语言学怎么样啊… 大二想作为交换生去那儿
结语:亲爱的准留学生们,以上便是环俄小编为您整理的《用c语言的栈来编写逆波兰公式的程序》一文,感谢您的阅读。若您仍然没有找到所需要的信息,请随时联系我们的在线顾问获取最专业、最准确的一对一答疑咨询,不仅可以为您节省宝贵的时间,也能有效避免因遗漏信息而与心仪的高校失之交臂,环俄留学祝您留学事宜一切顺利!
版权声明:本文标题《用c语言的栈来编写逆波兰公式的程序》,网页地址(https://www.huane.net/zhidao/94665),素材来自互联网并不代表本网观点,如果本网转载的稿件涉及您的版权请发邮件至info@huane.net,我们将第一时间依照国家相关法律法规妥善处理。
-
全文导读本文共收集了《1. 西华大学是211吗》、《2. 高
| 浏览 9272 2021-09-27
-
全文导读本文共收集了《1. 单招退档后还可以参加第二次单招吗
| 浏览 9073 2021-09-27
-
全文导读本文共收集了《1. 中专可以申请托木斯克国立大学吗》
| 浏览 9153 2021-09-27
-
全文导读本文共收集了《1. 去匈牙利留学需要的条件》、《2.
| 浏览 9532 2021-09-27
-
全文导读本文共收集了《1. 莫斯科国立大学本科毕业回国认证是
| 浏览 9453 2021-09-27
-
全文导读本文共收集了《1. 乌拉尔联邦大学有哪些专业》、《2
| 浏览 9131 2021-09-27
-
| 浏览 728 2020-01-14
-
一、在哪里可以下载波兰语字体XP系统下尝试以下方法:1。直接
| 浏览 593 2020-01-14
-
一、在中国哪些大学工商管理专业较有实力中国高等院校工商管理研
| 浏览 312 2020-01-14
-
| 浏览 1021 2020-01-14
-
一、上海商学院的工商管理专业上海商学院(Shanghai B
| 浏览 1129 2020-01-14
-
数学基础差,成考专升本科工商管理和会计学相比哪个考试好通过?
一、数学基础差,成考专升本科工商管理和会计学相比哪个考试好通
| 浏览 1352 2020-01-14