<?php
class linknode
{
public $data;
public $next;
public function __construct($data) {
$this->data=$data;
$this->next=null;
}
}
class linklist
{
public $linknode;
public $rear;
public $size;
}
class lianbiao
{
//初始化
public function init_linklist()
{
$linklist = new linklist();
$header = new linknode(-1);
//存放头结点
$linklist->linknode = $header;
$linklist->rear = $linklist->linknode;
$linklist->size=0;
return $linklist;
}
//入队
public function push_link($lk,$data)
{
$new_node = new linknode($data);
$lk->rear->next = $new_node;
$lk->rear = $new_node;
$lk->size++;
}
//获得队头元素
public function get_top($lk)
{
$current = $lk->linknode->next;
return $current->data;
}
//获得队尾元素
public function get_rear($lk)
{
$current = $lk->rear;
return $current->data;
}
//获取大小
public function get_size($lk)
{
return $lk->size;
}
//出队
public function pop_link($lk)
{
if($lk->size<=0)
{
return;
}
if($lk->size==1)
{
$del = $lk->linknode->next;
$lk->linknode->next=null;
$lk->rear=$lk->linknode;
}
else{
$del = $lk->linknode->next;
//echo $del->data;exit;
$lk->linknode->next = $del->next;
$del = null;
}
$lk->size--;
}
//销毁
public function destroy_link($lk)
{
$lk=null;
}
}
$lianbiao = new lianbiao();
$lk = $lianbiao->init_linklist();
$node1 = new linknode(10);
$node2 = new linknode(20);
$node3 = new linknode(30);
$lianbiao->push_link($lk,$node1);
$lianbiao->push_link($lk,$node2);
$lianbiao->push_link($lk,$node3);
//遍历
while($lianbiao->get_size($lk)>0)
{
$data=$lianbiao->get_top($lk);
echo $data->data."<br />";
$lianbiao->pop_link($lk);
}
$lianbiao->destroy_link($lk);
?>
php实现队列
最新推荐文章于 2024-07-09 10:32:39 发布