⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zhuhanshu.cpp

📁 这是数据结构实验书上的一个程序,自己写的,出学者可以看一下,水平有限,写的不好,多多指教
💻 CPP
字号:
#include<stdio.h>
#include<stdlib.h>
#include"yuanwenjian.h"
int main()
{
	int a[1000],f=1,i,x,w;
	char c;
	dastack.base1=(int *)malloc(STACK_SIZE * LEN1);   //构造运算数栈
	if(! dastack.base1) printf("error\n");
	dastack.top1=dastack.base1;
	dastack.stacksize1=STACKINCREMENT;

	sgstack.base2=(char *)malloc(STACK_SIZE * LEN2);   //构造运算符栈
	if(! sgstack.base2) printf("error\n");
	sgstack.top2=sgstack.base2;
	sgstack.stacksize2=STACKINCREMENT;

	printf("  输入要求:\n       在输入的表达式的结尾要输入“=”作为表达式的结束符!!\n");
	i=0;
	* (sgstack.top2++)='=';
	c=getchar();
	while(c !='\n'){
		if(c>='0' && c<='9'){
			a[i]= c - '0';     //将字符转换为整数
			i++;
		}
	    else if(c=='+' || c=='-' || c=='*' || c=='/' || c=='(' || c==')' || c=='='){
			if(i !=0){
				* (dastack.top1 ++)=account(a,i-1);
				i=0;
			}
            w=compsig(* ( sgstack.top2 -1),c );
			while(w == 1 ){
				if(dastack.top1 == dastack.base1+1) {//与一个运算符匹配的运算数只有一个,没有构成正确的运算表达式
					f=0;
					printf("输入的表达式错误!\n");
					return 0;
				}
				if(f != 0){
					x=operate( * (-- dastack.top1),* (-- sgstack.top2),* (-- dastack.top1) );
				    * (dastack.top1 ++)=x;
				    w=compsig(* (sgstack.top2 - 1),c );
				}
			}
			if(w == -1)
				*(sgstack.top2 ++)=c;
			else if(w == 0){
				if(c !='='){
				sgstack.top2=sgstack.top2 - 1;
				}
				else{
					if(! dastack.base1){
						f=0;
						printf("这不是一个正确的表达式,请重新输入\n");
						sgstack.top2=sgstack.base2;
					}
				}
			}
		    else if(w == 2){
				f=0;
				printf("表达式出错,请重新输入\n");
			    return 0;
			}
		}
		else {
			printf("    输入的字符非法!\n");
			f=0;
            return 0;
		}
		c=getchar();
	}
	if(f==1)    //如果输入正确表达式得出结果则输出运算结果
		printf("运算结果为%d\n",*(dastack.base1));
		return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -