PHP数据结构大全->
http://www.php1.cn/Search/?s_txt=PHP%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B9%8B
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
<?php
/********************************************************
* 我写的PHP都是从C语言的数据结构中演化而来************************
**************************************************************
/**
* 1.用PHP模拟一个静态队列 (以数组为列子 只有6个元素) 是一个循环队列
* 2.pBase->初始化后指向一个数组
* 3.front ->初始化为0,指向队列的第一个元素
* 4.rear->初始化为0,指向最后一个元素的下一个元素
* 5.end_queue-> 保存出队的值以后的数字
* 6.en_queue ->入队列的方法
* 7.full_queue->判断队列是否已满
* 8.empty_queue->判断队列是否为空
* 9.traverse_queue->遍历队列
* 10.out_queue->出队的函数
* @Author 任孟洋
* @time 2013-8-10
***/
Class Queue {
public
$pBase
;
//一个数组
public
$front
;
//指针指向队列的第一个元素
public
$rear
;
//指针指向队列的最后一个元素
public
$End_queue
;
//记录出队的元素
public
$Start_queue
;
//记录入队的元素
//初始化
public
function
__construct(){
$this
->pBase =Array();
$this
->front = 0;
$this
->rear = 0;
}
// 入队
public
function
en_queue(&
$QUEUE
,
$val
){
if
(
$this
->full_queue(
$QUEUE
)){
return
FALSE;
//失败
}
else
{
$QUEUE
->pBase[
$QUEUE
->rear] =
$val
;
//把元素入队 (成功)
$QUEUE
->rear =(
$QUEUE
->rear+1) % 6;
//rear往上移动一位
return
TRUE;
}
}
//判断队列是否已满
public
function
full_queue(
$QUEUE
){
if
((
$QUEUE
->rear+1) % 6 ===
$QUEUE
->front){
return
TRUE;
//满
}
else
{
return
FALSE;
//没满
}
}
//判断是否为空
public
function
empty_queue(
$QUEUE
){
if
(
$QUEUE
->front ==
$QUEUE
->rear){
return
TRUE;
}
else
{
return
FALSE;
}
}
//循环数输出队列
public
function
traverse_queue(
$QUEUE
){
$q
=
$QUEUE
->front ;
while
(
$q
!=
$QUEUE
->rear){
echo
'数列为<br/>'
.
$QUEUE
->pBase[
$q
].
'<br/>'
;
$q
= (
$q
+1) % 6;
//向上移动一位
}
}
//出队
public
function
out_queue(
$QUEUE
){
if
(!
$this
->empty_queue(
$QUEUE
)){
$this
->End_queue =
$QUEUE
->pBase[
$QUEUE
->front];
$QUEUE
->front = (
$QUEUE
->front + 1) % 6;
//向上移动一位
}
}
}
//输出界面
//显示格式
header(
"Content-Type:text/html;charset=UTF-8;"
);
echo
'<hr/>'
;
echo
'没有初始化之前的空间是多少'
.var_dump(memory_get_usage());
echo
'<hr/>'
;
//实例化
$QUEUE
=
new
Queue();
/*入队*/
$QUEUE
->en_queue(
$QUEUE
,1);
$QUEUE
->en_queue(
$QUEUE
,2);
$QUEUE
->en_queue(
$QUEUE
,3);
$QUEUE
->en_queue(
$QUEUE
,4);
$QUEUE
->en_queue(
$QUEUE
,5);
$QUEUE
->en_queue(
$QUEUE
,6);
/**出队**/
$QUEUE
->out_queue(
$QUEUE
);
/*入队*/
$QUEUE
->en_queue(
$QUEUE
,6);
$QUEUE
->traverse_queue(
$QUEUE
);
//遍历
echo
'<hr/>'
;
echo
'出对以后的数字'
.
$QUEUE
->End_queue.
'<br/>'
;
echo
'初始化以后'
.var_dump(memory_get_usage());
echo
'<hr/>'
;
?>
|