• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php如何实现反转链表(代码实例)

php 搞代码 4年前 (2022-01-21) 31次浏览 已收录 0个评论

本篇文章给大家带来的内容是关于php如何实现反转链表(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1.常见方法分为迭代和递归,迭代是从头到尾,递归是从尾到头
2.设置两个指针,old和new,每一项添加在new的后面,新链表头指针指向新的链表头
3.old->next不能直接指向new,而是应该设置一个临时指针tmp,指向old->next指向的地址空间,保存原链表数据,然后old->next指向new,new往前移动到old处new=old,最后old=tmp取回数据

while(old!=null){  tmp=old->next  old->next=new  new=old  old=tmp}
<?phpclass Node{        public $data;        public $next;}//头插法创建一个链表$linkList=new Node();$linkList->next=null;//头结点for($i=1;$i<=10;$i++){        $node=new Node();        $node->data="aaa{$i}";//创建新结点$node        $node->next=$linkList->next;//$node->next指向头结点->next        $linkList->next=$node;//头结点->next指向$node}var_dump($linkList);function ReverseList($pHead){        $old=$pHead->next;//跳过头结点        $new=null;        $tmp=null;        //反转过程        while($old!=null){                $tmp=$old->next; <strong>*本文来源gaodai#ma#com搞@代~码^网+</strong><strong>搞代gaodaima码</strong>               $old->next=$new;                $new=$old;                $old=$tmp;        }           //给新链表加个头结点        $newHead=new Node();        $newHead->next=$new;        var_dump($newHead);}ReverseList($linkList);
object(Node)#1 (2) {  ["data"]=>  NULL  ["next"]=>  object(Node)#11 (2) {    ["data"]=>    string(5) "aaa10"    ["next"]=>    object(Node)#10 (2) {      ["data"]=>      string(4) "aaa9"      ["next"]=>      object(Node)#9 (2) {        ["data"]=>        string(4) "aaa8"        ["next"]=>        object(Node)#8 (2) {          ["data"]=>          string(4) "aaa7"          ["next"]=>          object(Node)#7 (2) {            ["data"]=>            string(4) "aaa6"            ["next"]=>            object(Node)#6 (2) {              ["data"]=>              string(4) "aaa5"              ["next"]=>              object(Node)#5 (2) {                ["data"]=>                string(4) "aaa4"                ["next"]=>                object(Node)#4 (2) {                  ["data"]=>                  string(4) "aaa3"                  ["next"]=>                  object(Node)#3 (2) {                    ["data"]=>                    string(4) "aaa2"                    ["next"]=>                    object(Node)#2 (2) {                      ["data"]=>                      string(4) "aaa1"                      ["next"]=>                      NULL                    }                  }                }              }            }          }        }      }    }  }}object(Node)#12 (2) {  ["data"]=>  NULL  ["next"]=>  object(Node)#2 (2) {    ["data"]=>    string(4) "aaa1"    ["next"]=>    object(Node)#3 (2) {      ["data"]=>      string(4) "aaa2"      ["next"]=>      object(Node)#4 (2) {        ["data"]=>        string(4) "aaa3"        ["next"]=>        object(Node)#5 (2) {          ["data"]=>          string(4) "aaa4"          ["next"]=>          object(Node)#6 (2) {            ["data"]=>            string(4) "aaa5"            ["next"]=>            object(Node)#7 (2) {              ["data"]=>              string(4) "aaa6"              ["next"]=>              object(Node)#8 (2) {                ["data"]=>                string(4) "aaa7"                ["next"]=>                object(Node)#9 (2) {                  ["data"]=>                  string(4) "aaa8"                  ["next"]=>                  object(Node)#10 (2) {                    ["data"]=>                    string(4) "aaa9"                    ["next"]=>                    object(Node)#11 (2) {                      ["data"]=>                      string(5) "aaa10"                      ["next"]=>                      NULL                    }                  }                }              }            }          }        }      }    }  }}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php如何实现反转链表(代码实例)
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址