[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;

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?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);

  

posted @   唯一客服系统开发笔记  阅读(737)  评论(3编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示
1
chat with us