[PHP] 数据结构-链表创建-插入-删除-查找的PHP实现
链表获取元素
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实现的更多相关文章
- 单链表创建、删除、查找、插入之C语言实现
本文将详细的介绍C语言单链表的创建.删除.查找.插入以及输出功能 一.创建 #include<stdio.h> #include<stdlib.h> typedef int E ...
- 链表的C++实现——创建-插入-删除-输出-清空
注:学习了数据结构与算法分析后,对链表进行了C++实现,参考博文:http://www.cnblogs.com/tao560532/articles/2199280.html 环境:VS2013 // ...
- 单链表的插入删除操作(c++实现)
下列代码实现的是单链表的按序插入.链表元素的删除.链表的输出 // mylink.h 代码 #ifndef MYLINK_H #define MYLINK_H #include<iostream ...
- AVL树的插入删除查找算法实现和分析-1
至于什么是AVL树和AVL树的一些概念问题在这里就不多说了,下面是我写的代码,里面的注释非常详细地说明了实现的思想和方法. 因为在操作时真正需要的是子树高度的差,所以这里采用-1,0,1来表示左子树和 ...
- jQuery 节点操作(创建 插入 删除 复制 替换 包裹)
一,创建元素节点: 第1个步骤可以使用jQuery的工厂函数$()来完成,格式如下: $(html); $(html)方法会根据传入的HTML标记字符串,创建一个DOM对象,并将这个DOM对象包装成一 ...
- 二叉搜索树-php实现 插入删除查找等操作
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它的 ...
- 数据结构Java实现03----单向链表的插入和删除
文本主要内容: 链表结构 单链表代码实现 单链表的效率分析 一.链表结构: (物理存储结构上不连续,逻辑上连续:大小不固定) 概念: 链式存储结构是基于指针实现的.我们把一个数据 ...
- 【数据结构】——搜索二叉树的插入,查找和删除(递归&非递归)
一.搜索二叉树的插入,查找,删除 简单说说搜索二叉树概念: 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右 ...
- 数据结构Java实现02----单向链表的插入和删除
文本主要内容: 链表结构 单链表代码实现 单链表的效率分析 一.链表结构: (物理存储结构上不连续,逻辑上连续:大小不固定) 概念: 链式存储结构是基于指针实现的.我们把一个数据 ...
随机推荐
- Paper | 亚像素运动补偿 + 视频超分辨
目录 1. ABSTRACT 2. INTRODUCTION 3. RELATED WORKS 4. SUB-PIXEL MOTION COMPENSATION (SPMC) 5. OUR METHO ...
- css3简单旋转
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>&l ...
- GCD on Blackboard
题目大意:给你n个数,然后在这n个数中选一个数,选中的这个数可以变成任意的数,使这n个数的gcd(最大公约数)最大.打印这个最大的gcd. 思路:这题一看貌似很复杂,其实这题只要你知道前缀和 和 ...
- JavaScript实现单张图片上传功能
前台jsp代码 <%@ page language="java" pageEncoding="UTF-8" contentType="text/ ...
- 搭建docker环境准备
Docker平台的基本构成
- Tomcat简介
Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器. 如果你学过html,css,你会知道你写的页面只能自己访问,别人不能远程访 ...
- selenium的chromedriver对应的chrome版本
chromedriver下载地址:http://chromedriver.storage.googleapis.com/index.html chromedriver版本 支持的Chrome版本 v2 ...
- UFLDL 教程学习笔记(一)神经网络
UFLDL(Unsupervised Feature Learning and Deep Learning)Tutorial 是由 Stanford 大学的 Andrew Ng 教授及其团队编写的一套 ...
- Linux学习笔记之一————什么是Linux及其应用领域
1.1认识Linux 1)什么是操作系统 2)现实生活中的操作系统 win7 Mac Android iOS 3) 操作系统的发展史 (1)Unix 1965年之前的时候,电脑并不像现在一样普遍,它 ...
- 使用SonarCloud对.NET Core项目进行静态代码分析
本文将介绍如何使用SonarCloud进行.NET Core项目的静态代码分析.SonarCloud是SonarQube提供的基于云的版本,特别针对于开源项目是免费的. 首先,在sonarcloud. ...