四则运算表达式(中缀表达式)转换为后缀表达式:
如中缀表达式9 + ( 3 - 1 ) * 3 + 10 / 2,对应的后缀表达式是9 3 1 - 3 * + 10 2 / +
PS:逻辑实现了,要下班了,代码有些乱,明天再来优化。
<?php function suffix($str, &$stack, &$newStrList){ //如果是数字则输出 if(is_numeric($str)){ $newStrList .= $str . ' '; } //如果是左括号则入栈 else if($str == '('){ $stack[] = $str; } //如果是右括号则将最近的左括号之前的所有数据出栈 else if($str == ')'){ while($arrPop = array_pop($stack)){ if($arrPop == '('){ break; } $newStrList .= $arrPop . ' '; } } //如果是加减乘除则判断与栈顶符号优先级 else if(in_array($str, array('+', '-', '*', '/')) && count($stack) > 0){ $key = (count($stack) - 1); if(in_array($stack[$key], array('+', '-', '*', '/'))){ if(checkPriority($str, $stack[$key]) != 1){ for($i=$key; $i>=0; $i--){ if($stack[$i] == '('){ break; } $newStrList .= $stack[$i] . ' '; unset($stack[$i]); $stack = array_values($stack); } $stack[] = $str; }else{ $stack[] = $str; } }else{ $stack[] = $str; } }else{ $stack[] = $str; } } /** * 判断运算符的优先级 * @param $operatorA * @param $operatorB * @return A大于B返回1,A等于B返回0,A小于B返回-1 */ function checkPriority($operatorA, $operatorB){ switch($operatorA){ case '+': case '-': if($operatorB == '+' || $operatorB == '-'){ return 0; }else if($operatorB == '*' || $operatorB == '/'){ return -1; } break; case '*': case '/': if($operatorB == '+' || $operatorB == '-'){ return 1; }else if($operatorB == '*' || $operatorB == '/'){ return 0; } break; default: exit('error'); } } $stack = array(); $newStrList = ''; $strList = '9 + ( 3 - 1 ) * 3 + 10 / 2'; $strList = explode(' ', $strList); foreach($strList as $str){ if($str == ' '){ continue; } suffix($str, $stack, $newStrList); } $stack = array_reverse($stack); foreach($stack as $s){ $newStrList .= $s . ' '; } echo $newStrList;
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사
어 ass 신 크리드 그림자 : 조개 수수께끼 솔루션
4 몇 주 전ByDDD
Windows 11 KB5054979의 새로운 기능 및 업데이트 문제를 해결하는 방법
3 몇 주 전ByDDD
Atomfall에서 크레인 제어 키 카드를 찾을 수 있습니다
4 몇 주 전ByDDD
<s> : 데드 레일 - 모든 도전을 완료하는 방법
1 몇 달 전ByDDD
Atomfall Guide : 항목 위치, 퀘스트 가이드 및 팁
1 몇 달 전ByDDD

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.
