博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP实现队列(Queue)数据结构
阅读量:5340 次
发布时间:2019-06-15

本文共 2143 字,大约阅读时间需要 7 分钟。

队列(Queue),是一种特殊的先进先出线性表,其只能在前端进行删除操作(一般称为出队),在后端进行插入操作(一般称为入队)。进行删除操作的端称为队头,进行插入操作的端称为队尾。队列,是按照先进先出或后进后出的原则组织数据。当队列中没有元素时,称为空队列。

数据结构与算法(PHP实现) - 队列(Queue)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
/**
 
* 数据结构与算法(PHP实现) - 队列(Queue)。
 
*
 
* @author 创想编程(TOPPHP.ORG)
 
* @copyright Copyright (c) 2013 创想编程(TOPPHP.ORG) All Rights Reserved
 
* @license http://www.opensource.org/licenses/mit-license.php MIT LICENSE
 
* @version 1.0.0 - Build20130607
 
*/
class
Queue {
  
/**
   
* 队列。
   
*
   
* @var array
   
*/
  
private
$queue
;
 
  
/**
   
* 队列的长度。
   
*
   
* @var integer
   
*/
  
private
$size
;
 
  
/**
   
* 构造方法 - 初始化数据。
   
*/
  
public
function
__construct() {
    
$this
->queue =
array
();
    
$this
->size = 0;
  
}
 
  
/**
   
* 入队操作。
   
*
   
* @param mixed $data 入队数据。
   
* @return object 返回对象本身。
   
*/
  
public
function
enqueue(
$data
) {
    
$this
->queue[
$this
->size++] =
$data
;
 
    
return
$this
;
  
}
 
  
/**
   
* 出队操作。
   
*
   
* @return mixed 空队列时返回FALSE,否则返回队头元素。
   
*/
  
public
function
dequeue() {
    
if
(!
$this
->isEmpty()) {
      
--
$this
->size;
      
$front
=
array_splice
(
$this
->queue, 0, 1);
 
      
return
$front
[0];
    
}
 
    
return
FALSE;
  
}
 
  
/**
   
* 获取队列。
   
*
   
* @return array 返回整个队列。
   
*/
  
public
function
getQueue() {
    
return
$this
->queue;
  
}
 
  
/**
   
* 获取队头元素。
   
*
   
* @return mixed 空队列时返回FALSE,否则返回队头元素。
   
*/
  
public
function
getFront() {
    
if
(!
$this
->isEmpty()) {
      
return
$this
->queue[0];
    
}
 
    
return
FALSE;
  
}
 
  
/**
   
* 获取队列的长度。
   
*
   
* @return integer 返回队列的长度。
   
*/
  
public
function
getSize() {
    
return
$this
->size;
  
}
 
  
/**
   
* 检测队列是否为空。
   
*
   
* @return boolean 空队列则返回TRUE,否则返回FALSE。
   
*/
  
public
function
isEmpty() {
    
return
0 ===
$this
->size;
  
}
}
?>
示例代码
1
2
3
4
5
6
7
8
<?php
$queue
=
new
Queue();
$queue
->enqueue(1)->enqueue(2)->enqueue(3)->enqueue(4)->enqueue(5)->enqueue(6);
echo
'<pre>'
, print_r(
$queue
->getQueue(), TRUE),
'</pre>'
;
 
$queue
->dequeue();
echo
'<pre>'
, print_r(
$queue
->getQueue(), TRUE),
'</pre>'
;
?>

说明:PHP数组函数已有类似队列的功能函数存在:array_unshift(入队)和、array_shift(出队)。

转载于:https://www.cnblogs.com/dyllove98/p/3159660.html

你可能感兴趣的文章
[转]AI+RPA 融合更智能
查看>>
Javascript拖拽&拖放系列文章1之offsetParent属性
查看>>
OWIN的理解和实践(二) – Host和Server的开发
查看>>
VS DLL 复制本地
查看>>
异常处理原则
查看>>
scrapy框架之递归解析和post请求
查看>>
Java 之泛型通配符 ? extends T 与 ? super T 解惑
查看>>
关于小程序后台post不到数据的问题
查看>>
mysql left join,right join,inner join用法分析
查看>>
Oracle scott解锁 以及连接数据库
查看>>
浅谈C语言中的联合体
查看>>
【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器
查看>>
照着书写的几个经典排序算法(插入、希尔、堆、归并、快排)
查看>>
[Swift]LeetCode753. 破解保险箱 | Cracking the Safe
查看>>
2017-2018-1 20155330《信息安全技术》实验二——Windows口令破解
查看>>
20155210 实验一 逆向与Bof基础
查看>>
20个有用的正则表达式
查看>>
PTA 02-线性结构3 Reversing Linked List (25分)
查看>>
.Net开源框架列表【转载】
查看>>
(转)Linux内核之进程和系统调用
查看>>