접미사 표현 식 에서 접 두 사 를 구하 고 접미사 표현 식 에서 값 을 구하 십시오.
컴퓨터: 접미사 식
접미사 접 두 사 를 돌려 계산 해 야 합 니 다.어느 단계 든 스 택 이 필요 합 니 다.
에 대해 (3 + 4)× 5 - 6
접미사
관련 된 스 택 은 '+ -' 와 같은 기 호 를 저장 하 는 데 사 용 됩 니 다.× / ( )”
생각:
디지털 출력 만 나 기;기호 가 창고 에 들 어 오 는 것 을 만나다
빈 창고 나 기호 가 왼쪽 괄호 일 때 바로 창고 에 들 어가 기;
연산 자 일 때 스 택 에 들 어 갈 기 호 는 스 택 내 기호 보다 커 야 합 니 다. 현재 스 택 내 에서 이 연산 자 보다 크 거나 같은 스 택 에서 출력 한 다음 에 스 택 에 들 어 갑 니 다.
연산 자가 오른쪽 괄호 일 때, 첫 번 째 왼쪽 괄호 기호 가 창고 에서 나 올 때 까지, 괄호 가 아 닌 기 호 를 출력 합 니 다.
알고리즘:
//
void mid2after(char *a, char *&b){
int l=strlen(a);
int i=0,j=0;
sqstack s;
initstack(s);
while(i<l&&s.top>=-1){
if(a[i]>='0'&&a[i]<='9'){b[j++]=a[i++];if(a[i]<'0'||a[i]>'9')b[j++]=' ';}
else{
if(s.top==-1||a[i]=='(')s.data[++s.top]=a[i++];
else if(a[i]=='*'||a[i]=='/'){while(s.data[s.top]=='*'||s.data[s.top]=='/'){b[j++]=s.data[s.top--];}s.data[++s.top]=a[i++];}
else if(a[i]=='+'||a[i]=='-')
{while(s.data[s.top]=='+'||s.data[s.top]=='-'||s.data[s.top]=='*'||s.data[s.top]=='/'){b[j++]=s.data[s.top--];}
s.data[++s.top]=a[i++];}
else if(a[i]==')'){i++;while(s.data[s.top]!='('){b[j++]=s.data[s.top--];}
s.top--;}
else if(a[i]==' ')i++;
else {cout<<"inlegal input!";return;}
}
}
while(s.top>-1){b[j++]=s.data[s.top--];}
}
접미사 값 구하 기
접미사 식 값 스 택 은 주로 값 을 저장 하 는 데 사 용 됩 니 다.
생각:
숫자 를 만 날 때마다 스 택 에 들 어 갑 니 다.
연산 자 를 만 나 면 바로 창고 에서 나 오기 두 자리 연산 을 하고, 결 과 는 다시 창고 에 들어간다.
접미사 표현 식 나무 에 괄호 가 있 습 니 다.
알고리즘:
//
int get_after(char *b){
int l=strlen(b);
sqstack s;
initstack(s);
int i=0,ss;
while(i<l&&s.top>=-1){
if(b[i]>='0'&&b[i]<='9'){
ss=0;
while(b[i]>='0'&&b[i]<='9')
{
int j=1;
j=(b[i]-'0');
ss=ss*10+j;
i++;
// cout<<ss<<" ";
}
s.data[++s.top]=ss;
}
else {int t=s.data[s.top];
switch (b[i])
{case '+':s.data[--s.top]=s.data[s.top]+t;break;
case '-':s.data[--s.top]=s.data[s.top]-t;break;
case '*':s.data[--s.top]=s.data[s.top]*t;break;
case '/':{if(t==0)return -100;s.data[--s.top]=s.data[s.top]/t;break;
}
case ' ':break;
default:{cout<<"error! "<<b[i];return -100;}
}
i++;}
}
if(s.top>-1)return s.data[s.top];
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.