跳至
[1]
[全屏预览]
<meta charset="utf-8" />
<?
class Node{
public $data;
public $next;
function __construct($data, $next = null){
$this->data = $data;
$this->next = $next;
}
}
class LinkedList{
private $head; //单链表的头结点,不存储数据
function __construct(){//单链表的构造方法
//头结点的数据为"傀儡", 不代表 任何数据
$this->head = new Node("dummy 傀儡");
$this->first = null;
}
function isEmpty(){
return ($this->head->next == null);
}
/* orderInsert($data) 方法,
* 按给定字符串 $data 的大小, 将其安插到适当的位置,
* 以保证单链表中字符串的存储,始终是有序的。
*/
function orderInsert($data){
$p = new Node($data);
if($this->isEmpty()){
$this->head->next = $p;
}
else{
$q = $this->head;
while($q->next != NULL && strcmp($data, $q->next->data)> 0 ){
$q = $q->next;
}
$p->next = $q->next;
$q->next = $p;
}
}
function insertLast($data){//将字符串插到单链表的尾部
$p = new Node($data);
if($this->isEmpty()){
$this->head->next = $p;
}
else{
$q = $this->head->next;
while($q->next != NULL)
$q = $q->next;
$q->next = $p;
}
}
function find($value){//查询是否有给定的字符串
$q = $this->head->next;
while($q->next != null){
if(strcmp($q->data,$value)==0){
break;
}
$q = $q->next;
}
if ($q->data == $value)
return $q;
else
return new Node($value." 没有找到!");
}
function traversal(){//遍历单链表
if(!$this->isEmpty()){
$p=$this->head->next;
echo $p->data." ";
while($p->next != null){
$p=$p->next;
echo $p->data." ";
}
}else
echo "链表为空!";
}
}
$ll = new LinkedList();
$city =array("Wuhan", "Beijing", "Shanghai", "Tianjin", "Changsha", "Kunming", "Gongyi","Tokyo","New York","Ottawa","Moskow","Edmonton","Glasgow","Thunder Bay","New Delhi");
for ($i=0;$i<count($city);$i++)
$ll->orderInsert($city[$i]);
$ll->traversal();
echo "<br>".$ll->find("Gongyi")->data."<br>";
echo $ll->find("Baoding")->data."<br>";
?>
登录后复制