Implement linked list in php

后端 未结 8 696
小蘑菇
小蘑菇 2020-12-08 05:22

How should I implement a linked list in PHP? Is there a implementation built in into PHP?

I need to do a lot of insert and delete operations, and at same time I need

8条回答
  •  我在风中等你
    2020-12-08 05:55

    Here is another Linked list implementation using an array of elements. The add function keeps the elements sorted.

    _list)) {
                $this->_head = $val;
                $this->_list[$val] = null;
                return;
            }
    
            $curr = $this->_head;
    
            while ($curr != null || $curr === 0) {
    
                // end of the list
                if($this->_list[$curr] == null) {
                    $this->_list[$curr] = $val;
                    $this->_list[$val] = null;
                    return;
                }
    
                if($this->_list[$curr] < $val) {
                    $curr = $this->_list[$curr];
                    continue;
                }
                $this->_list[$val] = $this->_list[$curr];
                $this->_list[$curr] = $val;
                return;
    
            }
    
        }
    
        public function deleteNode($val) {
    
            if(empty($this->_list)) {
                return;
            }
    
            $curr = $this->_head;
    
            if($curr == $val) {
    
                $this->_head = $this->_list[$curr];
                unset($this->_list[$curr]);
    
                return;
            }
    
            while($curr != null || $curr === 0) {
    
                // end of the list
                if($this->_list[$curr] == null) {
                    return;
                }
    
                if($this->_list[$curr] == $val) {
                    $this->_list[$curr] = $this->_list[$val];
                    unset($this->_list[$val]);
                    return; 
                }
    
                $curr = $this->_list[$curr];
            }
        }
    
        function showList(){
            $curr = $this->_head;
            while ($curr != null || $curr === 0) {
                echo "-" . $curr;
                $curr = $this->_list[$curr];
            }
    
    
        }
    }
    
    $list = new LinkedList();
    
    $list->addNode(0);
    $list->addNode(3);
    $list->addNode(7);
    $list->addNode(5);
    $list->addNode(2);
    $list->addNode(4);
    $list->addNode(10);
    
    $list->showList();
    
    echo PHP_EOL;
    $list->deleteNode(3);
    
    $list->showList();
    
    echo PHP_EOL;
    
    $list->deleteNode(0);
    
    $list->showList();
    
    echo PHP_EOL;
    

    The output is:

    -0-2-3-4-5-7-10

    -0-2-4-5-7-10

    -2-4-5-7-10

提交回复
热议问题