循环链表

class Node{
        public $data=null;
        public $next = null;
        public function __construct($data=null){
            $this->data = $data;
        }
    }

    class LinkdList{
        public $header=null;
        public function __construct($data=null){
            $this->header= new Node();
        }
        //插入
        public function insert($data){
            $current = $this->header;
            $newNode = new Node($data);

            while($current->next){
                if($current->next != $this->header){
                    $current = $current->next;
                }else{
                    break;  
                }
            }
            $current->next = $newNode;
            $newNode->next = $this->header;
        }
        //查找所在位置
        public function find($data){
            $current = $this->header->next;
            $index=1;
            while($current){
                if($current->data == $data){
                    break;
                }else{
                    $index++;
                    $current = $current->next;
                }
            }
            return $index;
        }

        //固定位置修改
        public function update($data,$num){
            $current = $this->header->next;
            $index=1;
            while($index < $num ){
                $current = $current->next;
                $index++;
            }
            $current->data=$data;
        }
        //添加
        public function add($data,$num){
            $current = $this->header->next;
            $index=1;
            $newNode = new Node($data);
            while($index < $num){
                $prev = $current;
                $current=$current->next;
                $index++;
            }
            $prev->next = $newNode;
            $newNode->next = $current;
        }

        //删除
        public function del($num){
            $current = $this->header->next;
            $index = 1;
            while($index < $num){
                $prev = $current;
                $current = $current->next;
                $index++;
            }
            $prev->next = $current->next;
        }

        //遍历
        public function listLink(){
            $current=$first = $this->header;
            while($current){
                $current = $current->next;
                if($current == $first){
                    break;
                }
                echo $current->data;
                echo "\r\n";
            }
        }
    }

    //$arr=[10,304,4,5,1,30];
    $arr=[10,304,4,5,1,30,38];
    $obj  = new LinkdList();
    foreach ($arr as $key => $value) {
        $obj->insert($value);
    }
    //$obj->update(100,2);
    //$obj->add(90,4);
   //echo  $obj->find(5);
   $obj->del(4);
   $obj->listLink();

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。