<?php
class node{
//初始化变量,包括存储的内容和下一个数据的指针
public $id = 0;
public $data = '';
public $next = null;
//构造函数,设置存储内容的数据
public function __construct($id,$nodedata){
$this->id = $id;
$this->data = $nodedata;
}
}
class singleLink{
public $head = '';
public $size = 0;
public function insert($id,$value,$prenodeid = 0){
$node = new node($id,$value);
//如果是空链表,直接添加
if($this->size == 0){
$this->head = $node;
}elseif($prenodeid == 0){
//如果不是空链表,且并没有指定在某一个节点前添加,则在当前节点前添加
$node->next = $this->head;
$this->head = $node;
}else{
//在某一个节点后添加新节点
$currentnode = $this->head;
while($currentnode->next != null) {
if ($currentnode->next->id == $prenodeid) {
$node->;next = $currentnode->next;
$currentnode->next = $node;
break;
}
$currentnode = $currentnode->next;
}
}
$this->size++;
return $this;
}
public function edit($id,$value){
$flag = false;
$current = $this->head;
while(@$current->id != null){
if($current->id == $id){
$current->data = $value;
$flag = true;
break;
}
$current = $current->next;
}
return $flag;
}
public function get($id=0){
$current = $this->head;
while(@$current->id != null){
if($id != 0 && $current->id == $id){
$node = $current;
break;
}else{
$node[] = array($current->id,$current->data);
}
$current = $current->next;
}
return $node;
}
public function delete($id){
$flag = false;
$current = $this->head;
while(@$current->id != null){
if($current->next->id == $id){
$current->next = $current->next->next;
$this->size--;
$flag = true;
break;
}
$current = $current->next;
}
return $flag;
}
}
$linklist = new singleLink();
$linklist->insert(1,'hello1');
$linklist->insert(2,'hello2');
$linklist->insert(3,'hello3');
$linklist->insert(4,'hello4');
$linklist->insert(5,'hello5');
$linklist->insert(6,'hello6',2);
$linklist->insert(7,'hello7');
$linklist->delete(5);
$linklist->insert(8,'hello8')->insert(9,'hello9')->insert(10,'hello10');
echo "<pre>";
print_r($linklist);
print_r($linklist->get());
action
本站未注明转载的文章均为原创,并采用
CC BY-NC-SA 4.0授权协议,
转载请注明来源,谢谢!如本站内容对你有所帮助的话,欢迎订阅关注
邢栋博客,唠嗑(分享)每日的折腾经历。
已有 0 条评论