Heim Backend-Entwicklung PHP-Tutorial 逆波兰表达式计算,该如何解决

逆波兰表达式计算,该如何解决

Jun 13, 2016 am 10:05 AM
array case data stack

逆波兰表达式计算
最近在整理资料时发现了一些以前收藏的有趣代码
计划逐步将他们移植到 PHP 供有兴趣的人参考

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/** * 逆波兰表达式计算 * 中缀转后缀 **/function postfix($infix) {    $priority = array( //算符优先级        '+' => 1, '-' => 1,        '*' => 2, '/' => 2,        '(' => 0, ')' => 0,        '.' => 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0        );    $stack = array(); //符号栈    $data = array(); //数值栈     $i = $top = 0;    $last = -1;    $len = strlen($infix);    while($i= $priority[$infix{$i}]) {                    postfix_callback(array_shift($stack), $data);                }                array_unshift($stack, $infix{$i});                break;            case ')':                if($t != '') array_unshift($data, $t);                $t = '';                while($stack[0] != '(') {                    postfix_callback(array_shift($stack), $data);                }                array_shift($stack);                break;            default:                if($i > $last+1 && $t != '') {                    array_unshift($data, $t);                    $t = '';                }                $t .= $infix{$i};                $last = $i;                break;         }        $i++;    }    while($stack) {        postfix_callback(array_shift($stack), $data);    }    return $data[0];}/** * postfix 的工作函数 * 用于计算表达式的值 **/function postfix_callback($ch, &$data) {    $b = array_shift($data);    switch($ch) {        case '+':            $data[0] += $b;            break;        case '-':            $data[0] -= $b;            break;        case '*':            $data[0] *= $b;            break;        case '/':            $data[0] /= $b;            break;    }}
Nach dem Login kopieren
测试例
PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->echo postfix( '(2+3)*(3+4)' ); //out 35
Nach dem Login kopieren


------解决方案--------------------
先回贴在看
------解决方案--------------------
这个好东西。

------解决方案--------------------
前排占座, 板主老大给力.
------解决方案--------------------
前排占座, 板主老大给力.
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Eine eingehende Untersuchung der strukturellen Aspekte und Funktionen von OP Stack Eine eingehende Untersuchung der strukturellen Aspekte und Funktionen von OP Stack Jan 18, 2024 pm 05:45 PM

OPStack ist ein Open-Source-Blockchain-Framework, das von Optimism Collective, der Entwicklungsgruppe hinter dem Optimism Network, veröffentlicht wurde. Es ist ein wichtiges Werkzeug sowohl für die Ethereum- als auch für die Optimism-Community. Das Hauptziel von OPStack besteht darin, das Optimism-Netzwerk zu stärken und wichtige Softwaretools für das Optimism-Mainnet sowie die kommende Optimism-Superchain und ihr Governance-Modell bereitzustellen. Durch die Bereitstellung einer entwicklerorientierten Umgebung besteht die Kernidee von OPStack darin, Wachstum und Innovation im Ethereum-Bereich zu fördern. Es ebnet den Weg für innovative Entwicklungen und vereinfacht die Erstellung von Blockchains. OPStac

Array mit der Array.Sort-Funktion in C# sortieren Array mit der Array.Sort-Funktion in C# sortieren Nov 18, 2023 am 10:37 AM

Titel: Beispiel für die Verwendung der Array.Sort-Funktion zum Sortieren eines Arrays in C#. Text: In C# ist Array eine häufig verwendete Datenstruktur, und häufig sind Array-Sortiervorgänge erforderlich. C# stellt die Array-Klasse bereit, die über die Sort-Methode verfügt, um Arrays bequem zu sortieren. In diesem Artikel wird gezeigt, wie Sie ein Array mithilfe der Array.Sort-Funktion in C# sortieren, und es werden spezifische Codebeispiele bereitgestellt. Zunächst müssen wir die grundlegende Verwendung der Array.Sort-Funktion verstehen. Array.So

HMD Skyline erhält eine neue Farboption und ein offizielles Magnetgehäuse HMD Skyline erhält eine neue Farboption und ein offizielles Magnetgehäuse Aug 23, 2024 am 07:04 AM

Als das HMD Skyline (bei Amazon für 499 US-Dollar erhältlich) letzten Monat auf den Markt kam, war es in zwei Farben erhältlich – Neon Pink und Twisted Black. Zu ihnen gesellt sich nun eine dritte Farbe namens Blue Topaz. HMD Global hat außerdem einen offiziellen Fall für den Ph angekündigt

Java verwendet die Funktion empty() der Klasse Stack, um festzustellen, ob der Stapel leer ist Java verwendet die Funktion empty() der Klasse Stack, um festzustellen, ob der Stapel leer ist Jul 25, 2023 pm 10:25 PM

Java verwendet die Funktion empty() der Klasse Stack, um zu bestimmen, ob der Stapel leer ist. Der Stapel (Stack) ist eine gängige Datenstruktur, die dem First-In-Last-Out-Prinzip (FILO) folgt. In Java können wir die Stack-Klasse verwenden, um die Funktionalität des Stacks zu implementieren. Die Stack-Klasse bietet eine Reihe von Methoden zum Betreiben des Stapels. Eine der häufig verwendeten Methoden ist die Funktion empty (), mit der ermittelt wird, ob der Stapel leer ist. In Java befindet sich die Stack-Klasse im Paket java.util. Um diese Klasse verwenden zu können, benötigen Sie

So verwenden Sie die Funktion array_combine in PHP, um zwei Arrays zu einem assoziativen Array zu kombinieren So verwenden Sie die Funktion array_combine in PHP, um zwei Arrays zu einem assoziativen Array zu kombinieren Jun 26, 2023 pm 01:41 PM

In PHP gibt es viele leistungsstarke Array-Funktionen, die Array-Operationen komfortabler und schneller machen können. Wenn wir zwei Arrays zu einem assoziativen Array kombinieren müssen, können wir diese Operation mit der Funktion array_combine von PHP ausführen. Diese Funktion wird tatsächlich verwendet, um die Schlüssel eines Arrays als Werte eines anderen Arrays zu einem neuen assoziativen Array zu kombinieren. Als nächstes erklären wir, wie man die Funktion array_combine in PHP verwendet, um zwei Arrays zu einem assoziativen Array zu kombinieren. Erfahren Sie mehr über array_comb

Einfache und klare Methode zur Verwendung der PHP-Funktion array_merge_recursive() Einfache und klare Methode zur Verwendung der PHP-Funktion array_merge_recursive() Jun 27, 2023 pm 01:48 PM

Beim Programmieren in PHP müssen wir häufig Arrays zusammenführen. PHP stellt die Funktion array_merge() bereit, um die Array-Zusammenführung abzuschließen. Wenn jedoch derselbe Schlüssel im Array vorhanden ist, überschreibt diese Funktion den ursprünglichen Wert. Um dieses Problem zu lösen, stellt PHP in der Sprache auch eine Funktion array_merge_recursive() bereit, die Arrays zusammenführen und die Werte derselben Schlüssel beibehalten kann, wodurch das Programmdesign flexibler wird. array_merge

Variable zur Fallbeurteilung wechseln Variable zur Fallbeurteilung wechseln Feb 19, 2024 am 08:04 AM

Switchcase erfordert spezifische Codebeispiele, um Variablen zu bestimmen. Bei der Programmierung müssen wir häufig unterschiedliche Operationen basierend auf unterschiedlichen Variablenwerten ausführen. Die switchcase-Anweisung ist eine praktische Struktur, die es Ihnen ermöglicht, basierend auf dem Wert einer Variablen verschiedene Codeblöcke zur Ausführung auszuwählen. Das Folgende ist ein spezifisches Codebeispiel, das zeigt, wie die switchcase-Anweisung verwendet wird, um verschiedene Werte von Variablen zu ermitteln: #includeintmain(){

Welche Daten befinden sich im Datenordner? Welche Daten befinden sich im Datenordner? May 05, 2023 pm 04:30 PM

Der Datenordner enthält System- und Programmdaten, wie z. B. Softwareeinstellungen und Installationspakete. Jeder Ordner im Datenordner stellt einen anderen Typ von Datenspeicherordner dar, unabhängig davon, ob sich die Datendatei auf den Dateinamen „Data“ oder die Dateierweiterung „Benannte Daten“ bezieht Es handelt sich bei allen um vom System oder Programm angepasste Datendateien. Daten sind eine Sicherungsdatei zur Datenspeicherung, die im Allgemeinen mit Meidaplayer, Notepad oder Word geöffnet werden kann.

See all articles