实习报告二算术表达式求值演示(编辑修改稿)内容摘要:

p2(SqStack2 S)//若栈不空,则返回 S 的栈顶元素 { if(!=) return *()。 }//GetTop2 Status Push2(SqStack2 amp。 S,int e)//插入元素 e 为新的栈顶元素 { if(=)//栈满,追加存储空间 { =(int *)realloc(,(+STACKINCREMENT)*sizeof(int))。 if(!) return OVERFLOW。 =+。 +=STACKINCREMENT。 } *++=e。 return OK。 }//Push2 Status Pop2(SqStack2 amp。 S, int amp。 e)//若栈不空,则删除 S 的栈顶元素, { //用 e 返回其值,并返回 OK;否则返回 ERROR if(==) return ERROR。 e=*。 return OK。 }//Pop2 Status PrintStack2(SqStack2 S,int amp。 n) //若栈 S 不空,则从栈底到栈顶输出 S 的元素 (为 int 型 ),并返回打印的长度 { n=0。 int x,*p。 if(==) return ERROR。 for(p=。 p!=。 p++) { x=*p。 printf(%d ,*p)。 //打印该数值 n=n+count(x)+1。 //1 表示空 格长度 , count(x)为计算数 x 的位数 } return OK。 }//PrintStack2 其中 count(x)函数的实现为: int count(int a){//计算 a 的位数,因 a 是 int 型,所以把它当 成 不超过 5 位数来处理 if(a9999) return 5。 else if(a999) return 4。 else if(a99) return 3。 else if(a9) return 2。 else return 1。 }//count 主函数的算法 define TRUE 1 define FALSE 0 define OK 1 define ERROR 0 define OVERFLOW 2 define IINFEASIBLE 1 define N 100 void main() { i=0。 j=1。 flag=0。 char c[N],d,theta。 char OP[]=+*/()。 SqStack1 OPTR。 SqStack2 OPND。 InitStack1(OPTR)。 Push1(OPTR,39。 39。 )。 InitStack2(OPND)。 printf(请输入正确的算术表达式并以字符 39。 39。 结束 :\n)。 gets(c)。 printf(步骤 \tOPTR栈 \t\tOPND 栈 \t\t当前字符 主要操作 \n)。 while(istrlen(c)){ printf( %d\t,i+j)。 //打印序号 PrintStack1(OPTR,m)。 putchar(39。 \t39。 )。 //打印 OPTR 栈 if(m8) putchar(39。 \t39。 )。 //若打印长度不够 8,要再 PrintStack2(OPND,n)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。