美文网首页
两种方式翻转链表

两种方式翻转链表

作者: spurYin | 来源:发表于2017-05-07 23:45 被阅读0次
    <?php 
    class LinkList
    {
        public $val;
        public $nextLink;//下一个节点
        public function __construct($val){
            $this->val=$val;
        }
        
        function appendToTail($i){
            $newLink=new LinkList($i);
            $current=$this;
            while($current->nextLink != null){
                $current=$current->nextLink;
            }
            $current->nextLink=$newLink;
        }
    }
    class LinkListTest
    {
        /**
        *翻转链表
        **/
        function reverseLink($link){
            //需要3个指针
            //$l1,$l2,$l3;
            if($link == null || $link->nextLink == null){
                return $link;
            }
            $l1=null;
            $l2=$link;
            while($l2 != null){
                $l3=$l2->nextLink;//先把p2的下一个节点保存起来
                $l2->nextLink=$l1;//翻转p1、p2,p2的下一个节点指向p1
                //向后移动p1,p2,p3节点
                $l1=$l2;//p1向后移动到p2
                $l2=$l3;//p2向后移动到原来的p2->nextLink
            }
            return $l1;//返回原来的表尾,现在是表头
        }
        /**
        *递归实现
        *翻转链表
        */
        function reverseLink1($link)
        {
            if($link == null || $link->nextLink == null){
                return $link;
            }
            $l1=$link->nextLink;
            $link->nextLink=null;
            $revLink=$this->reverseLink1($l1);
            $l1->nextLink=$link;
            return $revLink;
        }
        //打印链表
        function printLink($link){
            while($link != null){
                echo $link->val."->";
                $link=$link->nextLink;
            }
        }
    }
    
    $list3=new LinkList(1);
    $list3->appendToTail(2);
    $list3->appendToTail(3);
    $list3->appendToTail(2);
    $list3->appendToTail(5);
    $ll= new LinkListTest;
    $ll->printLink($ll->reverseLink($list3));
    $ll->printLink($ll->reverseLink1($list3));
    

    相关文章

      网友评论

          本文标题:两种方式翻转链表

          本文链接:https://www.haomeiwen.com/subject/pkwptxtx.html