데이터 구조 -- 표현 식 값 구하 기 (스 택 기반)

2385 단어 데이터 구조
박 전 소감:
표현 식 의 값 을 구 하 는 것 은 이해 하기 어렵 습 니 다. 특히 각종 표현 식 의 우선 순 위 는 자신 이 디자인 해 야 합 니 다. 그리고 자신 이 이 우선 순위 의 비교 관 계 를 프로그램 에 어떻게 가 져 가 는 지 봐 야 합 니 다.여기 우리 문 은 스스로 간단 한 스 택 을 쓸 수도 있 고 시스템 자체 의 \ # include 를 호출 할 수도 있 습 니 다.
코드 블록:
#include 
#include 
#include 
#include                   //stack top(    ),push(   ),pop  (  )
using namespace std;


stack  optr;       //     
stack  optn;          //   


int zuobiao(char ch)                  //                
{

	int biao=0;
	switch(ch)
	{
	case'+':
		biao=0;break;
	case'-':
		biao=1;break;
	case'*':
		biao=2;break;
	case'/':
		biao=3;break;
	case'(':
		biao=4;break;
	case')':
		biao=5;break;
	case'$':
		biao=6;
	default:break;
	}
	return biao;
}


char quyou(char ch2,char ch1)                 //          
{
	const char youxian[7][7]=
	{
		{ '>','>','','>' },
		{ '>','>','','>' },
		{ '>','>','>','>','','>' },
		{ '>','>','>','>','','>' },
		{ '','>','>','>','0','>','>' },
		{ '='0'&&h<='9')               //      else,i  1,         ,  if,           if
		{	
			if(i==1)                   //             ,x             
			{
				int x=optn.top();
				optn.pop();
				optn.push(10*x+(h-'0'));
				i=1;                     // i=1        ,  h      
			}
			else                     //      
			{
				optn.push(h-'0');
				i++;
			}
			h=getchar();             //    
		}
		else                  //  h        
		{
			int a=0;int b=0;char w;i=0;
			switch(quyou(h,optr.top()))          //h           
			{
			case'':
				//h=getchar();
				//optn.push(h);
				w=optr.top();optr.pop();
				a=optn.top();optn.pop();
				b=optn.top();optn.pop();
				cal(a,w,b);
				optn.push(cal(a,w,b));       //         
			}
		}
		//optn.top();
	}
	return optn.top();                     //top       
	//cout<>n;	
	cout<

이 실험 은 주로 창고 에 대한 이 해 를 깊이 있 게 하기 위 한 것 이다.

좋은 웹페이지 즐겨찾기