PHP算法学习(6) 单向链表 实现栈
svn地址:svn://gitee.com/zxadmin/live_z
这个是模拟栈的先进后出的一个链表操作,自动维护链表,当然你也使用SPL的栈
测试版本php 5.4 ,5.6,7.0,7.2
/** 链表测试到辅助类*/final class Node {public $data;public $next = null;public function __construct($data) {$this->data = $data;}}
<?php/** 单向链表,注意是使用数组模拟单链表到特性,也可以理解为有单向链接到数组*/final class SinglyLinkedList {protected $list = null;// //从链表尾部压入一个节点,节点自动维护,不需要要像main方法那样自己维护public function push(Node $head, Node $Node) {$current = $head; //让$current指向$head;while ($current->next != null) {$current = $current->next;}$current->next = $Node->next;$current->next = $Node;}//从链表尾压出一个节点public function pop(Node $head) {$current = $head; //让$current指向$head;while ($current->next != null) {//提前查找链表尾部是否为空,为空就是尾部,吧当前节点的next复制问NULL,就是尾部元素干掉if ($current->next->next == null) {break;}$current = $current->next;}$current->next = null;}//非自动维护一个链表,只是单纯点组成一个链表public static function main() {$header = new Node(null);$node1 = new Node(['id' => 2, 'name' => '李1']);$header->next = $node1;$node2 = new Node(['id' => 5, 'name' => '李5']);$node1->next = $node2;$node3 = new Node(['id' => 7, 'name' => '李7']);$node2->next = $node3;pp($header);self::getAllNode($header);}public static function getAllNode($header) {$cur = $header;while ($cur->next != null) {$cur = $cur->next;p($cur->data);}}}
测试
//单链表 $head = new Node([]);$SinglyLinkedList = new SinglyLinkedList(); $node1 = new Node(['id' => 2, 'name' => '李1']); $SinglyLinkedList->push($head, $node1);//pp($SinglyLinkedList->getList()); $node2 = new Node(['id' => 5, 'name' => '李5']); $SinglyLinkedList->push($head, $node2);$node3 = new Node(['id' => 7, 'name' => '李7']); $SinglyLinkedList->push($head, $node3);$SinglyLinkedList->pop($head); pp($head);
转载于:https://www.cnblogs.com/zx-admin/p/10373866.html
PHP算法学习(6) 单向链表 实现栈相关推荐
- 数据结构与算法之反转单向链表和双向链表
数据结构与算法之反转单向链表和双向链表 目录 反转单向链表和双向链表 1. 反转单向链表和双向链表 题目描述 代码实现 public class Code_ReverseList {public st ...
- 结构与算法(03):单向链表和双向链表
本文源码:GitHub·点这里 || GitEE·点这里 一.链表简介 1.链表概念 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列 ...
- 算法相关(2)-单向链表
单向链表 创建单向链表 //节点的构造函数 function Node(value){this.value=value;this.next=null; }//单向链表的构造函数 function Li ...
- 算法—详细讲解单向链表的实现(python)
链表 链表是一种物理存储单元上非连续.非顺序的存储结构 数据元素的逻辑顺序通过链表中的指针链接次序实现 链表由一系列节点组成,节点可以在运行时动态生成 每个节点包含两个部分:存储数据元素的数据区.存储 ...
- 算法章节 数组、链表、栈、队列
数组 概念与特性 1,数组是线性表,用一组连续的内存空间存储⼀组具有相同类型的数据 2,最大的特性是⽀持按照下标O(1)时间复杂度内快速访问数组元素 3,⼀维数组寻址公式:a[i]_addr = ba ...
- 算法详解——单向链表反转
一.问题描述 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 二.分析问题 1.递归法 首先来考虑两个节点的基本情况,假设链表head有两个节点,只需要让head->n ...
- 算法学习之路|链表元素分类
给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而[0, K]区间内的元素都排在大于K的元素前面.但每一类内部元素的顺序是不能改变的.例如:给定链表为 18→ ...
- 转:C#数据结构和算法学习系列十三----链表
链表是被称为节点的类对象的群集.每一个节点通过一个引用链接到列表 内的后继节点上.节点包括存储数据的字段和节点引用的字段.到另外一个节点的引用被称为是链接.数组和链表之间的一个主要区别就是数组内的元素 ...
- 一步一步写算法(之单向链表)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 有的时候,处于内存中的数据并不是连续的.那么这时候,我们就需要在数据结构中添加一个属性,这个属 ...
最新文章
- 小白给小白详解维特比算法(二)
- GPT-3等三篇论文获NeurIPS2020最佳论文奖 | AI日报
- 面向对象程序设计课程进度条
- 解决 Idea 卡在 Resolving Maven dependencies ...
- bzoj4415 [Shoi2013]发牌 线段树
- MVC-通过对象获取整个表单内容
- 怎么调整矩形边框宽度_PKPM:梁刚度放大通过放大系数与矩形梁转T形梁的区别...
- Android学习JNI,使用JNI实现字符串加密
- 安卓饼状图设置软件_android开源图表库MPAndroidChart(曲线图、直方图、饼状图)...
- p6s与onvif_大华的录像机添加海康摄像头,使用了onvif协议,为啥也添加不进去?...
- adc 测试软件,ADC芯片参数测试技术解析
- aria2 linux 编译,Centos 7 编译安装Aria2
- 关于问答系统(QA)、对话系统(Chatbot)的学与思
- SLAM十四讲第三讲实践:useGeometry------小白强行读代码
- PHP网页文件扩展名,网页文件的扩展名有哪些
- 通过Excel表格批量生成汉信码
- C语言高级部分总结,也是面试官会经常问的问题哦~
- 服务器操作系统查询命令,服务器操作系统查询命令
- kvmla openvz 评测
- C++ OpenCV 基于HSV颜色分割区域、获取目标
热门文章
- java三目运算符嵌套_替代JS中的嵌套三元运算符
- java udp 接收不定长_JAVA UDP通信为什么只能接收一次数据,我想要时刻接收数据,并更新UI,大神们帮我看看程序吧?...
- python seach_python 正则re.search
- mysql 昨天日期_MySQL 日期函数 今天明天昨天......
- BZOJ4205卡牌配对——最大流+建图优化
- Get全栈技能点 Vue2.0 / Node.js / MongoDB 打造商城系统
- 喵哈哈村的魔法考试 Round #10 (Div.2) B
- [转] 微信小程序 页面跳转 传递参数
- 我的开发框架(WinForm)
- 推荐安装的Visual Studio Extensions