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();