php实现单链表(静态链表)
    data = $data;            $next && $this->next = $next;        }        public function getdata(){            return $this->data;        }        public function setdata($data){            $this->data = $data;        }        public function getnext(){            return $this->next;        }        public function setnext($next){            $this->next = $next;        }    }    //单链表类    class linklist{        private $data_list = null; //结点集                  public function linklist($data = false){            $this->data_list = array();            $title = new node(null);            $this->data_list[] = $title;                      if($data){                if(is_array($data)){                    $this->addmoredata($data);                }else{                    $this->adddata($data);                }            }        }        //返回第n个结点的值        public function getnodebynumber($number){            return $this->data_list[$this->findkeybynumber($number)]->getdata();        }        //添加一组结点        public function addmoredata($datas){            foreach($datas as $value){                $this->adddata($value);            }        }        //添加结点统一入口,供外面调用        //$number 添加在第几个结点的后面        public function adddata($data, $number = false){            $node = new node($data);            if($number === false || $number == count($this->data_list)){                $this->insertlastnode($node);            }elseif($number > count($this->data_list)){                return false;            }else{                $this->insertnode($node, $number);            }        }        //插入一个结点到最后        private function insertlastnode($node){                $node->setnext(null);                             $lastkey = $this->findlastnode();                $insert_key = $this->insertnodeintoarray($node);                $this->data_list[$lastkey]->setnext($insert_key);        }            //插入一个结点        private function insertnode($node, $number){            $insert_number = $this->findkeybynumber($number);                $node->setnext($this->data_list[$insert_number]->getnext());            $insert_key = $this->insertnodeintoarray($node);            $this->data_list[$insert_number]->setnext($insert_key);        }        //查找第n个结点对应的数组key        private function findkeybynumber($number){            $i = $key = 0;            while($i data_list[$key]->getnext();                $i ++;            }                     return $key;        }        //将结点加入数组        private function insertnodeintoarray($node){            $this->data_list[] = $node;                 return $this->getlastkey();        }        //删除结点        public function deletenode($number){            if($number == 0 || $number > count($this->data_list)){                return false;            }            $pre_key = $this->findkeybynumber($number - 1);            $key = $this->data_list[$pre_key]->getnext();          $this->data_list[$pre_key]->setnext($this->data_list[$key]->getnext());            unset($this->data_list[$key]);        }        //查找某结点的前一个结点        private function getprenodekey($key){            foreach($this->data_list as $k=>$v){                if($v->getnext() == $key){                    return $k;                  }            }            return false;        }        //打印链表        public function getdata_list(){            return $this->data_list;        }        //返回数组的最后一个键        private function getlastkey(){            end($this->data_list);            return key($this->data_list);        }        //判断某个键值是否存在        private function ifexistkey($key){            if(array_key_exists($key, $this->data_list)){                return true;            }                      return false;        }        //查找尾结点        public function findlastnode(){            foreach($this->data_list as $key=>$value){                if($value->getnext() === null){                    return $key;                }            }        }    }?>
   
 
   