PHP模拟链表操作
PHP模拟链表操作
一、总结
1、类成员用的是->
2、对象节点相连的话,因为是对象,所以不用取地址符号
3、数组传递参数的时候传引用的方法 ,&
二、PHP模拟链表操作
代码一:
/**
* Class Node
* PHP模拟链表的基本操作
*/
class Node{
public $data = '';
public $next = null;
}
//初始化
function init($linkList){
$linkList->data = 0; //用来记录链表长度
$linkList->next = null;
}
//头插法创建链表
function createHead(&$linkList,$length){
for($i=0;$i<$length;$i++){
$newNode = new Node();
$newNode->data = $i;
$newNode->next = $linkList->next;//因为PHP中对象本身就是引用所以不用再可用“&”
$linkList->next = $newNode;
$linkList->data++;
}
}
//尾插法创建链表
function createTail(&$linkList,$length){
$r = $linkList;
for($i=0;$i<$length;$i++){
$newNode = new Node();
$newNode->data = $i;
$newNode->next = $r->next;
$r->next = $newNode;
$r = $newNode;
$linkList->data++;
}
}
//在指定位置插入指定元素
function insert($linkList,$pos,$elem){
if($pos<1 && $pos>$linkList->data+1){
echo "插入位置错误!";
}
$p = $linkList;
for($i=1;$i<$pos;$i++){
$p = $p->next;
}
$newNode = new Node();
$newNode->data = $elem;
$newNode->next = $p->next;
$p->next = $newNode;
}
//删除指定位置的元素
function delete($linkList,$pos){
if($pos<1 && $pos>$linkList->data+1){
echo "位置不存在!";
}
$p = $linkList;
for($i=1;$i<$pos;$i++){
$p = $p->next;
}
$q = $p->next;
$p->next = $q->next;
unset($q);
$linkList->data--;
}
//输出链表数据
function show($linkList){
$p = $linkList->next;
while($p!=null){
echo $p->data." ";
$p = $p->next;
}
echo '<br/>';
} $linkList = new Node();
init($linkList);//初始化
createTail($linkList,10);//尾插法创建链表
show($linkList);//打印出链表
insert($linkList,3,'a');//插入
show($linkList);
delete($linkList,3);//删除
show($linkList);
代码2:
PHP模拟链表操作的更多相关文章
- 2019牛客暑期多校训练营(第三场) J LRU management 模拟链表操作
输入n, m,n表示n种操作,m表示最多可以容纳m个串. 第一种操作:先在容器里找是否存在这个串,如果不存在,则添加在末尾,这个串携带了一个值v. 如果存在,则先把之前存在的那个拿出来,然后在后面添加 ...
- UVa12657 - Boxes in a Line(数组模拟链表)
题目大意 你有一行盒子,从左到右依次编号为1, 2, 3,…, n.你可以执行四种指令: 1 X Y表示把盒子X移动到盒子Y左边(如果X已经在Y的左边则忽略此指令).2 X Y表示把盒子X移动到盒子Y ...
- hdu5009 Paint Pearls (DP+模拟链表)
http://acm.hdu.edu.cn/showproblem.php?pid=5009 2014网络赛 西安 比较难的题 Paint Pearls Time Limit: 4000/2000 M ...
- CF 552(div 3) E Two Teams 线段树,模拟链表
题目链接:http://codeforces.com/contest/1154/problem/E 题意:两个人轮流取最大值与旁边k个数,问最后这所有的数分别被谁给取走了 分析:看这道题一点思路都没有 ...
- C - Boxes in a Line 数组模拟链表
You have n boxes in a line on the table numbered 1 . . . n from left to right. Your task is to simul ...
- C++模拟链表
C++模拟链表 简易模拟链表,工厂设计模式.. 注意:请不要在操作时产生环状链表,会造成输出链表时陷入无限循环. #include <iostream> #include <stri ...
- UVA11988:悲剧文本(模拟链表)
You’re typing a long text with a broken keyboard. Well it’s not so badly broken. The only problem wi ...
- FZU 1492 地震预测(模拟链表的应用)(Java实现)
FZU 1492 地震预测(模拟链表的应用)(Java实现) 怀特先生是一名研究地震的科学家,最近他发现如果知道某一段时间内的地壳震动能量采样的最小波动值之和,可以有效地预测大地震的发生. 假设已知一 ...
- HTML 事件(四) 模拟事件操作
本篇主要介绍HTML DOM中事件的模拟操作. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4. ...
随机推荐
- Yeslab 华为安全HCIE-第七门-Agile Controlle
课程目录: 华为安全HCIE-第七门-Agile Controller(12篇)\1_aglie_controller产品亮点讲解.avi 华为安全HCIE-第七门-Agile Controlle ...
- SSH框架的多表查询(方法二)
必须声明本文章==>http://www.cnblogs.com/zhu520/p/7773133.html 一:在前一个方法(http://www.cnblogs.com/zhu520/p ...
- CCF模拟题 相反数
相反数 时间限制: 1.0s 内存限制: 256.0MB 问题描述 有 N 个非零且各不相同的整数.请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数). 输入格式 第一行包含一个 ...
- android启动模式对于体验的影响
说到Android的启动模式.懂Android的人肯定都懂. 通过设置启动模式我们不仅能够节省内存的使用.还能达到更好的体验,比方我们打开一个应用,点击home键回到主界面的时候程序是没有被kill掉 ...
- 【Android界面实现】使用GestureOverlayView控件实现手势识别
在Android开发中,我们不光能够使用已有的实现方式.并且,我们还能够利用Android这个智能手机平台.实现一些比較有特色的功能. 本篇文章介绍使用GestureOverlayView这个控件.实 ...
- TextWatcher-监听输入框内容变化
今天在做邮件登录的时候,遇到了输入框(Edittext)监听事件(TextWatcher),现在记录下. 首先看如下代码 eText.addTextChangedListener(new TextWa ...
- 62.nodejs中的ejs模板学习
转自:https://blog.csdn.net/dongmelon/article/details/72403913 02.ejs.这是被include的文件 <script> cons ...
- linux环境下禅道搭建
1.下载禅道安装包,根据操作系统的版本: 2.上传包到linux的opt目录中: 3.解压包: cd /opt tar xzvf 禅道包名称,如:tar xzvf ZenTaoPMS.8.1.3.zb ...
- Postman APP
http://chromecj.com/web-development/2017-12/870.html Postman 工具模拟http各种协议请求.
- angular入门(基础篇)
一.什么是AngularJs? AngularJs是一个JavaScript框架,通过指令扩展了HTML,并且通过表达式绑定数据到HTML. AngularJs使得开发现代的单页面应用程序(SPA:S ...