复制代码代码如下:php//链表节点class node{public $id; //节点id public $name; //节点名称public $next; //下一节点public function __construct($id, $name) {$this->id = $id;$this->name = $name;$this->next = null;}}//单链表class singelLinkList {private $header; //链表头节点//构造方法public function __construct($id = null, $name = null) {$this->header = new node ( $id, $name, null );}//获取链表长度public function getLinkLength() {$i = 0;$current = $this->header;while ( $current->next != null ) {$i ++;$current = $current->next;}return $i;}//添加节点数据public function addLink($node) {$current = $this->header;while ( $current->next != null ) {if ($current->next->id > $node->id) {break;}$current = $current->next;}$node->next = $current->next;$current->next = $node;}//删除链表节点public function delLink($id) {$current = $this->header;$flag = false;while ( $current->next != null ) {if ($current->next->id == $id) {$flag = true;break;}$current = $current->next;}if ($flag) {$current->next = $current->next->next;} else {echo "未找到id=" . $id . "的节点!
";}}//获取链表public function getLinkList() {$current = $this->header;if ($current->next == null) {echo ("链表为空!");return;}while ( $current->next != null ) {echo 'id:' . $current->next->id . ' name:' . $current->next->name . "";if ($current->next->next == null) {break;}$current = $current->next;}}//获取节点名字public function getLinkNameById($id) {$current = $this->header;if ($current->next == null) {echo "链表为空!";return;}while ( $current->next != null ) {if ($current->id == $id) {break;}$current = $current->next;}return $current->name;}//更新节点名称public function updateLink($id, $name) {$current = $this->header;if ($current->next == null) {echo "链表为空!";return;}while ( $current->next != null ) {if ($current->id == $id) {break;}$current = $current->next;}return $current->name = $name;}}$lists = new singelLinkList ();$lists->addLink ( new node ( 5, 'eeeeee' ) );$lists->addLink ( new node ( 1, 'aaaaaa' ) );$lists->addLink ( new node ( 6, 'ffffff' ) );$lists->addLink ( new node ( 4, 'dddddd' ) );$lists->addLink ( new node ( 3, 'cccccc' ) );$lists->addLink ( new node ( 2, 'bbbbbb' ) );$lists->getLinkList ();echo "-----------删除节点--------------";$lists->delLink ( 5 );$lists->getLinkList ();echo "-----------更新节点名称--------------";$lists->updateLink ( 3, "222222" );$lists->getLinkList ();echo "-----------获取节点名称--------------";echo $lists->getLinkNameById ( 5 );echo "-----------获取链表长度--------------";echo $lists->getLinkLength ();?>
