php实现队列

<?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);

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值