怎么在PHP中定义一个双向链表

  介绍

这期内容当中小编将会给大家带来有关怎么在PHP中定义一个双向链表,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

& lt; PHP ?/* *   ,* * *双向链表   ,* @author  zhiyuan12@   ,*//* *   ,*链表元素结点类   ,*/class  Node_Element  {   public 才能;pre 美元;=,零,,//,前驱   public 才能;next 美元;=,零,,//,后继   public 才能;key 美元;=,零,,//,元素键值   public 才能;data 美元;=,零,,//,结点值   function 才能;__Construct(键,美元,美元数据),{   ,,,这个→美元key =,美元的关键;   ,,,这个→美元data =,美元数据;   ,,}   }/* *   ,*双向链表类   ,*/class  DoubleLinkedList  {   private 才能;头;美元,//,头指针   private 才能;尾巴;美元,//,尾指针   private 才能,当前美元;,//,当前指针   private 才能,len美元,,//,链表长度   function 才能;__Construct (), {   ,,,这个→美元head =, self:: _getNode  (, null, null );   ,,,这个→美元curelement =, $ this→头;   ,,,这个→美元tail =, $ this→头;   ,,,len 美元;=,0;   ,,}   ,/* *   ,,*,@  desc:,读取链表全部结点   ,,*/public 才能;function  readAll (), {   ,,,tmp 美元;=,$ this→头;   ,,,while  (, tmp→美元next  !==, null ), {   ,,,,,tmp 美元;=,tmp→美元未来;   ,,,,,var_dump (,美元tmp→键,,tmp→美元data );   ,,,}   ,,}   public 才能;function 移动(pos1美元,,pos2美元),{   ,,,pos1Node 美元;=,$ this→findPosition  (, pos1 美元;);   ,,,pos2Node 美元;=,$ this→findPosition  (, pos2 美元;);   ,,,if  (pos1Node 美元;!==,null ,,, pos2Node 美元;!==,null), {   ,,,,,tmpKey 美元;=,pos1Node→美元关键;   ,,,,,tmpData 美元;=,美元pos1Node→数据;   ,,,,,美元pos1Node→key =, pos2Node→美元关键;   ,,,,,美元pos1Node→data =,美元pos2Node→数据;   ,,,,,美元pos2Node→key =, tmpKey美元;   ,,,,,美元pos2Node→data =, tmpData美元;   ,,,,,return 真实;   ,,,}   ,,,return 假;   ,,}   ,/* *   ,,*,@  desc:,在指定关键词删除结点   ,,*   ,,*,@param :美元的关键   *,,,,,,,指定位置的链表元素关键   ,,*/public 才能;function 删除(美元键),{   ,,,pos 美元;=,$ this→find  (, key 美元;);   ,,,if  (pos 美元;!==,null), {   ,,,,,tmp 美元;=,pos美元;   ,,,,,last 美元;=,空;   ,,,,,first 美元;=,真的;   ,,,,,while  (, tmp→美元next  !==, null ,,,美元tmp→下一步→key ===, key 美元),{   ,,,,,,,tmp 美元;=,tmp→美元未来;   ,,,,,,,if (!,第一个美元),{   ,,,,,,,,,这个→美元delNode  (, last 美元;);   ,,,,,,,},{else    ,,,,,,,,,first 美元;=,假;   ,,,,,,,}   ,,,,,,,last 美元;=,tmp美元;   ,,,,,}   ,,,,,if  (tmp→美元next  !==, null), {   ,,,,,,,美元pos→→前next =, tmp→美元未来;   ,,,,,,,美元tmp→下一步→pre =, pos→美元前;   ,,,,,},{else    ,,,,,,,美元pos→→前next =,空;   ,,,,,}   ,,,,,这个→美元delNode  (, pos 美元;);   ,,,,,这个→美元delNode  (, tmp 美元;);   ,,,}   ,,}   ,/* *   ,,*,@  desc:,在指定位置删除结点   ,,*   ,,*,@param :美元的关键   *,,,,,,,指定位置的链表元素关键   ,,*/null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在PHP中定义一个双向链表