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

📄 main.cpp

📁 数据结构的栈的应用
💻 CPP
字号:
#include<stdio.h>
#include<malloc.h>
#include"stack.h"
int IsOptr(char ch);
char Precede(char ch1,char ch2);
int Operate(int x,char ch,int y);//函数声明
int main()
{
   LinkOptr T;
   LinkOpnd N;
   InitStack(&T);
   PushOptr(T,'#');
   InitStack(&N);
   char ch;
   int num2=0,op1,op2;
   printf("请输入算术表达式(运算数为整数,输入#号结束输入):\n");
   ch=getchar();
   while(ch!='#'||GetTop1(T)!='#')
   {
      if(!IsOptr(ch))
	  {	
	     num2=num2*10+(int(ch)-48);	
	     PushOpnd(N,num2) ;
	     ch=getchar();}	  
	  else		 
		  {	num2=0;	          //实现分开不同的操作数 
	        switch(Precede(GetTop1(T),ch))
			{
	    	 case '<':
			   PushOptr(T,ch);	  
			   ch=getchar();
			 break;
		     case '=':
			   PopOptr(T);
			   ch=getchar();
			 break;
	    	 case '>':
			   op1=PopOpnd(N);
			   op2=PopOpnd(N);
			   PushOpnd(N,Operate(op2,PopOptr(T),op1));
             break;
			}
	  }
   }
   printf("表达式的最终结果为:\n");
   printf("%5d\n",GetTop2(N));
   return 0;
}
int IsOptr(char ch)
{
	char ptr[10]={'+','-','*','/','(',')','#'};
	for(int i=0;i<7;i++)
	{
	    if(ch==ptr[i])
			return true;
	}
	return false;
}//判断运算符的函数
char Precede(char ch1,char ch2)
{
    if((ch1=='+'||ch1=='-'||ch1=='*'||ch1=='/'||ch1==')')&&(ch2=='+'||ch2=='-'||ch2==')'||ch2=='#'))
		return '>';
	else if((ch1=='('||ch1=='#')&&(ch2=='+'||ch2=='-'||ch2=='*'||ch2=='/'||ch2=='('))
		return '<';
	else if((ch1=='+'||ch1=='-'||ch1=='*'||ch1=='/')&&ch2=='(')
		return '<';
	else if((ch1=='+'||ch1=='-')&&(ch2=='*'||ch2=='/'))
		return '<';
	else if((ch1=='*'||ch1=='/'||ch1==')')&&(ch2=='*'||ch2=='/'))
    	return '>';
	else if(ch1=='('&&ch2==')')
		return '=';
	else if(ch1=='#'&&ch2=='#')
		return '=';
	else 
		return false;
}//判断运算符的优先级
int Operate(int x,char ch,int y)
{
    if(ch=='+')
		return x+y;
	else if(ch=='-')
		return x-y;
	else if(ch=='*')
		return x*y;
	else if(ch=='/')
		return x/y;
	else 
		return false;
}//表达式计算的的函数

⌨️ 快捷键说明

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