本文共 2540 字,大约阅读时间需要 8 分钟。
PHP堆栈实现1、实现一个MinStack#pragma once <?php #define MAX_VALUE 100 typedef struct MinStack { int array[MAX_VALUE]; int top; } MinStack; void Init(MinStack *pMs) { pMs->top = 0; } void Push(MinStack *pMs, int data) { int min = data; if (pMs->top != 0 && pMs->array[pMs->top - 1] < min) { min = pMs->array[pMs->top - 1]; } pMs->array[pMs->top++] = data; pMs->array[pMs->top++] = min; } void Pop(MinStack *pMs) { pMs->top -= 2; } int Min(MinStack *pMs) { return pMs->array[pMs->top - 1]; } int Top(MinStack *pMs) { return pMs->array[pMs->top - 2]; } void test1() { MinStack ms; Init(&ms); $arr = array(3, 2, 5, 6, 8, 3, 1, 9); foreach ($arr as $i => $val) { Push(&ms, $val); } echo Min(&ms) . " "; Pop(&ms); echo Min(&ms) . " "; Pop(&ms); echo Min(&ms) . " "; }
2、改进方法方法1:使用一个栈实现交叉存放数据方法2:使用两个栈实现更高效的操作3、其他技术问题使用两个栈实现队列<?php class Solution { private Stack stack1; private Stack stack2; public void push(int node) { stack1.push($node); } public int pop() { if (stack2.isEmpty()) { while (!stack1.isEmpty()) { stack2.push(stack1.pop()); } } return stack2.pop(); } } </?php4、字符串数组运算示例$str = array("2", "4", "+", "9", "*"); $result = Solution::evalRPN($str); var_dump($result);
转载地址:http://udlkk.baihongyu.com/