php表达式10 2.5值为多少,用PHP编程计算中序表达式的值

编程

过程: 用class 模拟链表实现堆栈 .:p

完整测试程序地址: http://test.hightman.net/stack/stack_05.php

在表单里可输入: (3+5)/2 之类的表达试,支持 ()+-/*

以下为全部代码

error_reporting(E_ALL & ~E_NOTICE);

if (!defined("NULL"))

define("NULL", 0);

class s_node

{

var $data = NULL;

var $next = NULL;

}

function push(&$stack, $value)

{

$newnode = new s_node;

$newnode->data = $value;

$newnode->next = $stack;

$stack = $newnode;

}

function pop(&$stack, &$value)

{

if ($stack != NULL)

{

$value = $stack->data;

$stack = $stack->next;

}

else

$value = -1;

}

function is_operator($op)

{

return strchr("+-*/()", $op);

}

function privority($op)

{

if ($op == ')' || $op == '(')

return 1;

else if ($op == '+' || $op == '-')

return 2;

else if ($op == '*' || $op == '/')

return 3;

else

return 0;

}

function two_result($op, $n1, $n2)

{

switch ($op)

{

case '+' : return ($n2 + $n1);

case '-' : return ($n2 - $n1);

case '*' : return ($n2 * $n1);

case '/' : return ($n2 / $n1);

}

}

// main program

$expression = trim($_POST['expression']);

if (empty($expression))

{

print <

__EOF__;

exit();

}

$stack_op = NULL;

$stack_on = NULL;

$n1 = $n2 = 0;

$op = '';

$len = strlen($expression);

$tmp = '';

for ($i = 0; $i < $len; $i++)

{

if (is_operator($expression[$i]))

{

$tmp = trim($tmp);

if (!empty($tmp))

{

push($stack_on, $tmp);

$tmp = '';

}

if ($expression[$i] == '(' || empty($stack_op))

push($stack_op, $expression[$i]);

else if ($expression[$i] == ')')

{

while ($stack_op->data != '(')

{

pop($stack_on, $n1);

pop($stack_on, $n2);

pop($stack_op, $op);

push($stack_on, two_result($op, $n1, $n2));

}

pop($stack_op, $op); // pop the '('

}

else {

while (privority($expression[$i]) <= privority($stack_op->data))

{

pop($stack_on, $n1);

pop($stack_on, $n2);

pop($stack_op, $op);

push($stack_on, two_result($op, $n1, $n2));

}

push($stack_op, $expression[$i]);

}

}

else

$tmp .= $expression[$i];

}

$tmp = trim($tmp);

if (!empty($tmp))

{

push($stack_on, $tmp);

$tmp = '';

}

while (!empty($stack_op))

{

pop($stack_op, $op);

pop($stack_on, $n1);

pop($stack_on, $n2);

push($stack_on, two_result($op, $n1, $n2));

}

$result = 0;

pop($stack_on, $result);

print << The expression { $expression } result is '$result'

If you wan to try again, Please input the inorder expression :

__EOF__;

?>

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值