<?php
class Node{//节点类
public $next;
public $value;
public function __construct($node)
{
$this->value = $node;
}
}
class Link{//链表类
public $head = null;
public function __construct($node)
{
if ($node instanceof Node){
$this->head = $node;
}
}
public function addNode($node){//尾插法
$cur = $this->head;
while($cur->next!=null){
$cur = $cur->next;
}
$cur->next = $node;
}
public function linkList(){
$cur = $this->head;
while($cur!=null){
echo $cur->value."<br>";
$cur = $cur->next;
}
}
}
$head = new Node(1);
$link = new Link($head);
$link->addNode(new Node(2));
$link->addNode(new Node(3));
$link->addNode(new Node(4));
$link->addNode(new Node(5));
$newLink = reverse($link);
$newLink->linkList();
function reverse($link){//单链表逆序
$pre = $link->head;
$cur = $pre->next;
$next= null;
while($cur!=null){
$next = $cur->next;
$cur->next = $pre;
$pre = $cur;
$cur = $next;
}
$link->head->next = null;//这里注意,下面好像已经重新赋值,这句话没意义???类的对象这种重新赋值,类似于指针
$link->head = $pre;//这里的赋值,类似于指针,原来的头节点其实没有变化
return $link;
}
php链表
最新推荐文章于 2021-03-29 04:05:42 发布