链表获取元素
1.声明结点p指向链表第一个结点,j初始化1开始
2.j<i,p指向下一结点,因为此时p是指向的p的next,因此不需要等于
3.如果到末尾了,p还为null,就是没有查找到

插入元素
1.插入元素和查找类似,找到位置后
2.生成新的结点s, s->next=p->next p->next=s;

删除元素
1.删除元素,找到位置后
2.绕过一下,q=p->next p->next=q->next;

<?php
class Node{
public $data;
public $next;
}
//创建一个链表
$linkList=new Node();
$linkList->next=null;
$temp=$linkList;
for($i=1;$i<=10;$i++){
$node=new Node();
$node->data="aaa{$i}";
$node->next=null;
$temp->next=$node;
$temp=$node;
} //获取元素
function getEle($linkList,$i,&$e){
$p=$linkList->next;
//寻找结点标准语句
$j=1;
while($p && $j<$i){
$p=$p->next;
++$j;
}
if(!$p || $j>$i){
return false;
}
$e=$p->data;
return true;
} //插入元素
function listInsert(&$linkList,$i,$e){
$p=$linkList;
$j=1;
while($p && $j<$i){
$p=$p->next;
++$j;
}
if(!$p || $j>$i){
return false;
}
$s=new Node();
$s->data=$e;
//插入元素标准语句
$s->next=$p->next;
$p->next=$s;
return true;
}
//删除元素
function listDelete(&$linkList,$i,&$e){
$p=$linkList;
$j=1;
//注意这里的判断$p->next为真,主要是后面要把$p->next指向$p->next->next
while($p->next && $j<$i){
$p=$p->next;
++$j;
}
if(!$p->next || $j>$i){
return false;
}
$q=$p->next;//这个才是当前元素
$e=$q->data;
$p->next=$q->next;
return true;
}
$e="";
//获取元素
getEle($linkList,5,$e);
var_dump($e);
//插入元素
listInsert($linkList,5,"taoshihan");
//删除元素
listDelete($linkList,1,$e);
var_dump($e);
var_dump($linkList);

  

[PHP] 数据结构-链表创建-插入-删除-查找的PHP实现的更多相关文章

  1. 单链表创建、删除、查找、插入之C语言实现

    本文将详细的介绍C语言单链表的创建.删除.查找.插入以及输出功能 一.创建 #include<stdio.h> #include<stdlib.h> typedef int E ...

  2. 链表的C++实现——创建-插入-删除-输出-清空

    注:学习了数据结构与算法分析后,对链表进行了C++实现,参考博文:http://www.cnblogs.com/tao560532/articles/2199280.html 环境:VS2013 // ...

  3. 单链表的插入删除操作(c++实现)

    下列代码实现的是单链表的按序插入.链表元素的删除.链表的输出 // mylink.h 代码 #ifndef MYLINK_H #define MYLINK_H #include<iostream ...

  4. AVL树的插入删除查找算法实现和分析-1

    至于什么是AVL树和AVL树的一些概念问题在这里就不多说了,下面是我写的代码,里面的注释非常详细地说明了实现的思想和方法. 因为在操作时真正需要的是子树高度的差,所以这里采用-1,0,1来表示左子树和 ...

  5. jQuery 节点操作(创建 插入 删除 复制 替换 包裹)

    一,创建元素节点: 第1个步骤可以使用jQuery的工厂函数$()来完成,格式如下: $(html); $(html)方法会根据传入的HTML标记字符串,创建一个DOM对象,并将这个DOM对象包装成一 ...

  6. 二叉搜索树-php实现 插入删除查找等操作

    二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它的 ...

  7. 数据结构Java实现03----单向链表的插入和删除

    文本主要内容: 链表结构 单链表代码实现 单链表的效率分析 一.链表结构: (物理存储结构上不连续,逻辑上连续:大小不固定)            概念: 链式存储结构是基于指针实现的.我们把一个数据 ...

  8. 【数据结构】——搜索二叉树的插入,查找和删除(递归&非递归)

    一.搜索二叉树的插入,查找,删除 简单说说搜索二叉树概念: 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右 ...

  9. 数据结构Java实现02----单向链表的插入和删除

    文本主要内容: 链表结构 单链表代码实现 单链表的效率分析 一.链表结构: (物理存储结构上不连续,逻辑上连续:大小不固定)            概念: 链式存储结构是基于指针实现的.我们把一个数据 ...

随机推荐

  1. RISC与CISC比较

    1.RISC与CISC的差异 处理器的指令集可简单分为2种,CISC(complex instruction set computer)以及RISC(reduced instruction set c ...

  2. drf1 rest & restful规范

    web服务交互 我们在浏览器中能看到的每个网站,都是一个web服务.那么我们在提供每个web服务的时候,都需要前后端交互,前后端交互就一定有一些实现方案,我们通常叫web服务交互方案. 目前主流的三种 ...

  3. vs2015 打开项目自动运行 npm install

    问题:VS2015(visual studio 2015) 打开项目自动运行  npm install 解决办法: 打开工具-选项-项目与解决方案--外部web工具   去掉npm勾选 还有如果文件g ...

  4. Python selenium + Firefox启动浏览器

    Python selenium 的运用 from selenium import webdriver # from selenium.webdriver.firefox.firefox_profile ...

  5. 在Java Web中使用Spark MLlib训练的模型

    PMML是一种通用的配置文件,只要遵循标准的配置文件,就可以在Spark中训练机器学习模型,然后再web接口端去使用.目前应用最广的就是基于Jpmml来加载模型在javaweb中应用,这样就可以实现跨 ...

  6. Redis简明教程

    redis是什么: Redis is an open source, BSD licensed, advanced key-value store. It is often referred to a ...

  7. WIN10下Prolific USB-to-Serial Comm Port驱动

    最近在安装Prlific的时候,通过电脑自动安装启动后,发现系统无法识别,如下图所示: 还以为是驱动比较老,没有及时更新导致的,去官网下载最新的驱动,发现了这个列表: 这个驱动不支持win10. 后来 ...

  8. 欧拉函数(C语言实现)

    欧拉函数(Euler's totient function)是指小于n的正整数中与n互质的数的数目,用φ(n)表示.特别的,φ(1)=1: 例如:φ(10)=4:1 3 7 9与10互质. 公式:φ( ...

  9. 使用jdk的keytool 生成CA证书的方法

    一.CA证书生成设置总共分为以下5步: 步骤: 1.根据java的keytool生成CA根证书,放在服务器 2.根据服务器CA根证书导出客户端证书 3.tomcat增加SSL配置 4.客户端IE浏览器 ...

  10. 开启python学习之路

    新生入学这一周来,基本都在看python从入门到精通,边看书边敲代码,简单的几行代码,巩固学到的知识,像当初学习各类编程语言一样,从最初开发环境的搭建,数据类型等,学习中做好笔记,然后学会运用. 学习 ...