<?php
/**
* php实现链表
* Date: 2018/5/18
* Time: 下午5:59
*/ class Node
{
public $nodeId = 0;
public $left = 0;
public $right = 0; public function __construct($nodeId, $left, $right)
{
$this->nodeId = $nodeId;
$this->left = $left;
$this->right = $right;
} } class ListArr
{
private $list = null; public function construct()
{ } //创造一个n长度链表
public function createList($n)
{
if ($n <= 0) {
return false;
} for ($i = 0; $i < $n; $i++) {
if ($i == 0) {
$node = new Node(0, $n - 1, 1);
} elseif ($i == $n - 1) {
$node = new Node($n - 1, $n - 2, 0);
} else {
$node = new Node($i, $i - 1, $i + 1);
}
$this->list[$i] = $node;
}
} //遍历链表
public function iteratorList()
{
$total = count($this->list); //链表长度
$strRet = '';
for ($i = 0; $i < $total; $i++) {
$node = $this->list[$i];
echo "current node : {$node->left}->{$node->nodeId}->{$node->right}\n";
}
echo $strRet;
} //查找某一节点
public function findNode($n)
{
if ($n < 0 ) {
return false;
}
$total = count($this->list);
if ($n > $total) {
$n = $n % $total;
$node = $this->list[$n - 1];
} else {
$node = $this->list[$n - 1];
}
echo "current Node is {$node->nodeId} left is {$node->left} right is {$node->right}\n";
}
} $list = new ListArr();
$list->createList(5);
$list->findNode(3);
$list->findNode(6);
$list->iteratorList();

php实现循环链表的更多相关文章

  1. java程序设计之循环链表

    照例来说点废话,愿自己生一颗温柔细腻的心,这样女朋友也许一个眼神,一个微笑,我就知道如何做,可惜内心与外表一样粗糙,这一生有幸认识她,愿天下有情人终成眷属. 循环链表,顾名思义循环就好了,所以建一个线 ...

  2. 单链表、循环链表的JS实现

    数据结构系列前言: 数据结构作为程序员的基本知识,需要我们每个人牢牢掌握.近期我也展开了对数据结构的二次学习,来弥补当年挖的坑......   当时上课的时候也就是跟着听课,没有亲自实现任何一种数据结 ...

  3. 双向链表、双向循环链表的JS实现

    关于链表简介.单链表.单向循环链表.JS中的使用以及扩充方法:  单链表.循环链表的JS实现 关于四种链表的完整封装: https://github.com/zhuwq585/Data-Structu ...

  4. JAVA 链表操作:循环链表

    主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ...

  5. Have Fun with Numbers及循环链表(约瑟夫问题)

    1. 循环链表(约瑟夫问题) https://github.com/BodhiXing/Data_Structure 2. Have Fun with Numbers https://pta.pate ...

  6. javascript中使用循环链表实现约瑟夫环问题

    1.问题 传说在公元1 世纪的犹太战争中,犹太历史学家弗拉维奥·约瑟夫斯和他的40 个同胞被罗马士兵包围.犹太士兵决定宁可自杀也不做俘虏,于是商量出了一个自杀方案.他们围成一个圈,从一个人开始,数到第 ...

  7. Linux内核循环链表经典分析和移植

    为什么说这个链表做的经典呢,哥哥我从Linux内核里边儿扣出来的,要么怎么说内核不是一般人能写的,这代码太TM优美了! 这里有一篇参考文章:http://isis.poly.edu/kulesh/st ...

  8. C语言通用双向循环链表操作函数集

    说明 相比Linux内核链表宿主结构可有多个链表结构的优点,本函数集侧重封装性和易用性,而灵活性和效率有所降低.     可基于该函数集方便地构造栈或队列集.     本函数集暂未考虑并发保护. 一  ...

  9. 双向循环链表的Java版本实现

    1.单项循环列表 单向循环链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针不再是结束标记,而是指向整个链表的第一个结点,从而使单链表形成一个环.和单链表相比,循环单链表的长处是从链尾到链 ...

  10. C++ 模板双向不循环链表!!

    CTDChain<T,sort,equal,pointer> * nodeTemp = NULL; -------------------------------------------- ...

随机推荐

  1. 263. Ugly Number + 264. Ugly Number II + 313. Super Ugly Number

    ▶ 三个与丑数相关的问题 ▶ 第 263题,判定一个数字是否是丑数,即其素因子是否仅由 2,3,5 构成. ● 常规消除判别,4 ms class Solution { public: bool is ...

  2. How to create a site with AJAX enabled in MVC framework.

    How to create a site with AJAX enabled in MVC framework. The Project illustrates how to create a web ...

  3. 什么是2MSL

    [什么是2MSL] MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃.因为tcp报文( ...

  4. JS是面向过程、面向对象还是基于对象?面向对象的代码体现

    一.问题 javascript是面向对象的,还是面向过程的?基于对象是什么意思? 对象: 指的是对某一类事物进行抽象,抽象出这一类事物共同的特征以及行为(也就是属性和方法),那些拥有这一共同属性和方法 ...

  5. PHP与Imagemagick

    Imagemagick:相关站点: ImageMagick中文站:http://www.imagemagick.com.cn/ ImageMagick英文站:http://www.imagemagic ...

  6. UITextFeild银行卡/身份证/电话号任意分割.

    日常开发中可能有个需求, 1.银行卡每4位添加一个空格  2.电话号:3 4 4 比如(138 8888 8888)3.身份证(411111 20171213 1314) 看了网上许多方法都是输入的时 ...

  7. windows安装mysql-5.7压缩版详细教程

    前言 今天安装mysql数据库,进入mysql官网,对于windows来说有两个版本的文件可下载,一是.msi安装文件,二是.biz压缩包.以前一直用安装文件进行安装,百试不爽.今天突然不想用安装文件 ...

  8. Java 中的类

    public class Test{ public static void main(String[] args){ Animal a1 = new Dog(); a1.shout();//编译通过 ...

  9. gp sql

    appendonly -- drop table if exists test_appendonly; -- create table test_appendonly with(appendonly= ...

  10. 名字也挺重要---Webservice

    整了几个WebService  方法的返回类型叫GetResponse ,GetDataResponse结果老报错,要加啥元素,加了也报错,后来把Get改成Retrive,运行就正常了,看来Get抢手 ...