链表获取元素
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);

  

最新文章

  1. IL指令详细
  2. windows phone 豆瓣api的封装
  3. 33.allegro中Autosilk top, Silkscreen top 和Assembly top三个什么区别(转)
  4. C# 操作数据库就的那点代码
  5. LINUX下如何查看tomcat运行状态,判断其是否启动
  6. response.setContentType()的作用及参数
  7. linux内核中的C语言常规算法(前提:你的编译器要支持typeof和type)
  8. codeforces 3b之贪心算法
  9. 基于stm32的水质监测系统项目基础部分详细记录
  10. python-16
  11. 自学Linux Shell3.1-帮助命令man
  12. 使用 HTMLTestRunner 模块生成HTML格式的测试报告文件
  13. Linux系统安全笔记
  14. cmake 创建并调用动态库和静态库
  15. 关于mysql中information_schema.tables
  16. Clock skewdetected. Your build may be incomplete.
  17. jdk下载--操作系统
  18. 如何在Windows下查看JAVA端口占用情况(阿里面试)
  19. python 与 mongodb的交互
  20. psimpl_v7_win32_demo

热门文章

  1. 用Rider写一个由Autofac管理资源的WebAPI应用程序
  2. 【慕课网实战】Spark Streaming实时流处理项目实战笔记十九之铭文升级版
  3. Windows系统编程之异步I/O和完成端口
  4. linux上安装zookeeper
  5. 为什么需要micro-service构建平台
  6. org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class &#39;com.microsoft.sqlserver.jdbc.SQLServerDriver &#39;
  7. Flask 中内置的 Session
  8. npm全局目录修改
  9. 通过Function Score Query优化Elasticsearch搜索结果(综合排序)
  10. ffmpeg 视频实现各种特效