PHP实现栈数据结构
利用php面向对象思想,栈的属性有top、最大存储数、和存储容器(这里利用了php数组)。
代码如下:实现了入栈、出栈、遍历栈的几个方法:
 <?php
 class Stack{
     const MAXSIZE = 4;// 栈最大容量
     private $top = -1;
     private $stack = array();// 利用数组存储数据
     public function __construct(){
         $this->stack = array();
     }
     // 入栈
     public function push($ele){
         if ($this->top >= self::MAXSIZE-1){
             echo 'stack is full...';
             return false;
         }
         $this->stack[++$this->top] = $ele;// 此处必须是++i,先计算再使用
     }
     // 出栈,返回出栈元素
     public function pop(){
         if ($this->top == -1){
             echo 'stack is empty...';
             return false;
         }
         $ele = $this->stack[$this->top];
         unset($this->stack[$this->top--]);// 此处必须是i--,先使用再计算(注意出栈和入栈的区别)
         return $ele;
     }
     // 遍历栈
     public function show(){
         if ($this->top == -1){
             echo 'stack is empty...';
             return false;
         }
         for($i=$this->top; $i>-1; $i--){
             echo $this->stack[$i].'<br/>';
         }
     }
 }
 $stack = new Stack;
 $stack->push(1);
 $stack->push(2);
 $stack->push(3);
 $stack->push(4);
 //print_r($stack);
 $stack->show();
 $a = $stack->pop();
 $a = $stack->pop();
 $a = $stack->pop();
 $stack->show();
PHP实现栈数据结构的更多相关文章
- java 16 - 5 LinkedList模拟栈数据结构的集合
		请用LinkedList模拟栈数据结构的集合,并测试 题目的意思是: 你自己的定义一个集合类,在这个集合类内部可以使用LinkedList模拟. package cn_LinkedList; impo ... 
- Java基础知识强化之集合框架笔记29:使用LinkedList实现栈数据结构的集合代码(面试题)
		1. 请用LinkedList模拟栈数据结构的集合,并测试: 题目的意思是: 你自己的定义一个集合类,在这个集合类内部可以使用LinkedList模拟,使用LinkedList功能方法封装成 ... 
- 深入理解Java 栈数据结构
		栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元素放到栈 ... 
- 采用LinkedList来模拟栈数据结构的集合--先进后出
		三.用LinkedList来模拟栈数据结构的集合 /* * 自定义一个数据结构为LinkedList的集合类*/public class MyCollection_LinkedList { publi ... 
- Java实现栈数据结构
		栈(英语:stack)又称为栈或堆叠,是计算机科学中一种特殊的串列形式的抽象数据类型,其特殊之处在于只能允许在链表或数组的一端(称为堆栈顶端指针,英语:top)进行加入数据(英语:push)和输出数据 ... 
- 栈--数据结构与算法Javascript描述(4)
		栈 Stack 概念 栈是一种高效的数据结构,数据只能在栈顶添加或者删除,所以这样的操作很快,而且容易实现.栈的使用遍布程序语言的方方面面,从表达式求值到处理函数调用. 栈是一种特殊的列表,栈内的元素 ... 
- php栈数据结构和括号匹配算法
		栈,体现的是后进先出,即LIFO.队列,体现的是先进先出,即FIFO. 栈 array_pop() //尾出 array_push() //尾进 或 array_shift()//头进 array_u ... 
- 使用LinkedList模拟栈数据结构的集合
		封装MyStack类 public class MyStack { private LinkedList link; //调用MyStack创建对象的时候其实是调用的LinkedList创建的是Lin ... 
- Python—使用列表构造栈数据结构
		class Stack(object): """ 使用列表实现栈 """ def __init__(self): self.stack = ... 
随机推荐
- [20171113]修改表结构删除列相关问题.txt
			[20171113]修改表结构删除列相关问题.txt --//维护表结构删除字段一般都是先ALTER TABLE <table_name> SET UNUSED (<column_n ... 
- [cb]SceneView 获取鼠标位置
			扩展需求 在Scene视图中获取鼠标的位置 Demo 在Scene视图中,当鼠标点击时实例化一个Cube 重点部分 实现代码 using UnityEngine; using UnityEditor; ... 
- myeclipse编写servlet
			1.File--New--Other.搜索web--Dynamic Web Project--Next,Project name--Next,Next--web应用的根目录和web资源存放的目录--- ... 
- 使用Jenkins+gitlab自动化构建时排除分支
			我们的目的是gitlab上的代码有变动时会自动向Jenkins发送web钩子请求,触发指定的动作: 但默认情况下,所有分支(如测试环境和预生产)的代码有变动时都会触发,此时可以在Jenkins的项目设 ... 
- kafka集群管理工具kafka-manager部署安装
			一.kafka-manager 简介 为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 Kafka Manager.这个管理工具可以很 ... 
- 第一条:了解Objective-C语言的起源
			第一条:了解Objective-C语言的起源 Objective-C使用的消息结构而非函数调用. Objective-C的重要工作都由"运行组件(runtime component)&quo ... 
- python scrapy爬取知乎问题和收藏夹下所有答案的内容和图片
			上文介绍了爬取知乎问题信息的整个过程,这里介绍下爬取问题下所有答案的内容和图片,大致过程相同,部分核心代码不同. 爬取一个问题的所有内容流程大致如下: 一个问题url 请求url,获取问题下的答案个数 ... 
- python第五十一课——__slots
			2.__slots__: 作用:限制对象随意的动态添加属性 举例: class Demo: __slots__ = ('name','age','height','weight') #实例化Demo对 ... 
- python下载脚本
			#/usr/bin/env python#coding:UTF-8import timeimport os,sysimport urllib2 url = 'http://downloaduat.la ... 
- js常见错误类型
			(1)SyntaxError SyntaxError是解析代码时发生的语法错误 // 变量名错误 var 1a; // 缺少括号 console.log 'hello'); (2)ReferenceE ... 
