三九宝宝网宝宝教育教学论文

用c语言的栈来编写逆波兰公式的程序

02月23日 编辑 39baobao.com

[用C语言编写矩阵求逆的程序]1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 int a[4][4]; for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ a[i][j] = i*4+j+1; } } fo...+阅读

如题,代码如下,欢迎探讨!!![code=C/C++][/code]/* 表达式的后缀表示及其求值 */#include 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 { 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 { 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 { 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; }

以下为关联文档:

用C语言编写一个计算薪水的程序/*工资计算程序*/ #include main() { float originWage; /*应发工资*/ float realWage; /*实发工资*/ float tax; /*所缴税款*/ int i,hour,amount,money; printf("请选择工资种...

用C语言编写计算三角函数的程序math.h里的三角函数用的单位是弧度,你貌似错在这里。 答案补充 Example /* SINCOS.C: This program displays the sine, hyperbolic * sine, cosine, and hyperbolic cosine...

用C语言编写程序计算阶梯数 #include main() { int i=2; while(1){ i++; if(i%2==1&i%3==2&i%4==3&i%5==4&i%6==5&i%7==0) break; } printf("%d",i); }如图所示,望采纳。。。。。。...

图书信息管理程序用C语言编写#include#include#include#include#include#define STACK_INIT_SIZE 10 #define OK 1 #define TRUE 1 #define FALSE 0 #define ERROR 0 struct student /*定义学生类型,用于...

用c语言编写一个简单的程序main() { int a,b,i; bool flag = true; for (i = 0; i < 6; i++) { scanf("%d", &a); if (flag) { b = a; flag = false; } else { if (b > a) b = a; } } prinf("%d", b); }...

用C语言编写贪吃蛇游戏的程序回答:Mr.emily 大师 6月3日 16:45 #define N 200 #include#include#include#define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define Esc...

用C语言中的结构体编写程序#include<stdio.h> struct book{ char name[10]; int num; }book; int main() { int i; struct book b[20]; for(i=0;i<20;i++)//依次读入20个书名 {scanf("%s",&b[i].name);...

用c语言编写一个程序实现以下功能1 2 3 4 5 6 7 8 9 10 #include "stdio.h" intmain(intargc,char*argv[]){ 5261int a,b; doublex,y; charch1,ch2; printf("Please enter the data...\n"); scanf("%d%d%lf%lf %c...

用C语言编写下面介绍的程序展开1全部 #include "stdio.h"#include "ctype.h"void myDelay( int iSecond );void Translate( char letter, char *CodeStr ); void printMorse(char *CodeStr) ;struct MCode...

推荐阅读
图文推荐